কীভাবে jQuery ব্যবহার করে একটি সাধারণ পপআপ তৈরি করা যায়


217

আমি একটি ওয়েব পৃষ্ঠা ডিজাইন করছি। যখন আমরা ডিভ নামের মেইলের বিষয়বস্তুতে ক্লিক করি, আমি কীভাবে একটি লেবেল ইমেল এবং পাঠ্য বাক্সযুক্ত পপআপ উইন্ডোটি প্রদর্শন করতে পারি?


1
বিদ্যমান এইচটিএমএল বা সিএসএসকে স্পর্শ না করে দ্রুত সতর্কতার জন্য আমি এই উত্তরটি খুব দরকারী বলে খুঁজে পেয়েছি । এটি js থেকে jQuery ব্যবহার করে একটি ডিভি তৈরি করে এবং দেখায়।
মাবি

উত্তর:


241

প্রথমে সিএসএস - আপনার পছন্দ মতো এটি টুইট করুন:

a.selected {
  background-color:#1F75CC;
  color:white;
  z-index:100;
}

.messagepop {
  background-color:#FFFFFF;
  border:1px solid #999999;
  cursor:default;
  display:none;
  margin-top: 15px;
  position:absolute;
  text-align:left;
  width:394px;
  z-index:50;
  padding: 25px 25px 20px;
}

label {
  display: block;
  margin-bottom: 3px;
  padding-left: 15px;
  text-indent: -15px;
}

.messagepop p, .messagepop.div {
  border-bottom: 1px solid #EFEFEF;
  margin: 8px 0;
  padding-bottom: 8px;
}

এবং জাভাস্ক্রিপ্ট:

function deselect(e) {
  $('.pop').slideFadeToggle(function() {
    e.removeClass('selected');
  });    
}

$(function() {
  $('#contact').on('click', function() {
    if($(this).hasClass('selected')) {
      deselect($(this));               
    } else {
      $(this).addClass('selected');
      $('.pop').slideFadeToggle();
    }
    return false;
  });

  $('.close').on('click', function() {
    deselect($('#contact'));
    return false;
  });
});

$.fn.slideFadeToggle = function(easing, callback) {
  return this.animate({ opacity: 'toggle', height: 'toggle' }, 'fast', easing, callback);
};

এবং অবশেষে এইচটিএমএল:

<div class="messagepop pop">
  <form method="post" id="new_message" action="/messages">
    <p><label for="email">Your email or name</label><input type="text" size="30" name="email" id="email" /></p>
    <p><label for="body">Message</label><textarea rows="6" name="body" id="body" cols="35"></textarea></p>
    <p><input type="submit" value="Send Message" name="commit" id="message_submit"/> or <a class="close" href="/">Cancel</a></p>
  </form>
</div>

<a href="/contact" id="contact">Contact Us</a>

এখানে একটি jsfiddle ডেমো এবং বাস্তবায়ন।

অবস্থার উপর নির্ভর করে আপনি পপআপ সামগ্রীটি একটি অজ্যাক্স কলের মাধ্যমে লোড করতে চাইতে পারেন। সম্ভব হলে এটি এড়ানো ভাল কারণ এটি সামগ্রীটি দেখার আগে ব্যবহারকারীকে আরও গুরুত্বপূর্ণ বিলম্ব দিতে পারে। আপনি যদি এই পদ্ধতিকে গ্রহণ করেন তবে এখানে কিছু পরিবর্তন করতে হবে যা আপনি করতে চান want

এইচটিএমএল হয়ে যায়:

<div>
    <div class="messagepop pop"></div> 
    <a href="/contact" id="contact">Contact Us</a>
</div>

এবং জাভাস্ক্রিপ্টের সাধারণ ধারণাটি হয়ে যায়:

$("#contact").on('click', function() {
    if($(this).hasClass("selected")) {
        deselect();               
    } else {
        $(this).addClass("selected");
        $.get(this.href, function(data) {
            $(".pop").html(data).slideFadeToggle(function() { 
                $("input[type=text]:first").focus();
            });
        }
    }
    return false;
});

এটির কাজ, ধন্যবাদ তবে আমি অন্য একটি বোতাম কল নিবন্ধক অন্তর্ভুক্ত করতে যাচ্ছি। এটি ক্লিক করা হলে, নিবন্ধকরণ ফর্মটি পপআপ করা উচিত। তার জন্য আমি একই ফাংশনটি অন্তর্ভুক্ত করেছি এবং আইডিএস এবং ক্লাসের নাম পরিবর্তন করেছি। সমস্যাটি যখন আমি নিবন্ধকরণ ফর্মটির ঘনিষ্ঠ বোতামটি ক্লিক করি তখন এটি যোগাযোগের ফর্মটি টগল করে। ডেভিস @jason সাহায্যের প্রয়োজন
Rajasekar

1
আপনি যে এইচটিএমএল যোগ করেছেন তাতে অপসারণের জন্য ঘনিষ্ঠ পদ্ধতিটি to ("। বন্ধ") এ পরিবর্তন করুন। লাইভ ('ক্লিক', ফাংশন () {$ ("। পপ")। .removeClass ("নির্বাচিত"); $ ("। পপ")। অপসারণ (); // এটি যোগ করুন ... মিথ্যা ফিরুন;}); আপনি পপআপ বন্ধ করার আগে আরও একবার লিঙ্কটিতে ক্লিক করার পরে আপনি যে সমস্যাটি পাবেন তা সংশোধন করবে। উপায় দ্বারা দুর্দান্ত উত্তর,
চতুর

10
@ আইহেলক একাধিকবার "সাইন আপ" ক্লিক করার চেষ্টা করুন, তারপরে "বাতিল করুন" ক্লিক করুন। উহ-oooohhhh।
এভিপ্রোগ্রামার

আমি "দুর্দান্ত কোড" অংশটি নিয়ে একমত হই না। প্রচুর সামগ্রী জাভাস্ক্রিপ্টে হার্ডকোডযুক্ত। হ্যাঁ আমাদের সকলের সেখানে ব্রাউজারগুলিতে বেশ কয়েকটি দিন জাভাস্ক্রিপ্ট রয়েছে তবে কেবল ওয়েবটি করা সঠিক উপায় নয়। এইচটিএমএল বিষয়বস্তুর জন্য, জেএস "মেকআপ" এর জন্য। করিম answer৯ উত্তর আমার দৃষ্টিকোণ থেকে ভাল। আপনার মার্কআপটি এটি যেখানে অন্তর্ভুক্ত সেখানে এটি অন্তর্ভুক্ত করুন, এটি লুকান এবং কেবল এটি দেখান এবং এটি পপআপ হিসাবে আনুন। সরাসরি জাভাস্ক্রিপ্ট থেকে প্রচুর এইচটিএমএল প্রিন্ট করার চেয়ে অনেক ক্লিনার সমাধান। আপনার যদি প্রয়োজন না হয় তবে আপনাকে jQueryUI ব্যবহার করতে হবে না, পপআপে কিছু সামগ্রী রাখার লক্ষ লক্ষ উপায় রয়েছে
ZolaKt

12
মতে jQuery এর ওয়েবসাইট , jQuery এর 1.7 পর্যন্ত .live () মেথড অসমর্থিত হয়েছে। ইভেন্ট হ্যান্ডলার সংযুক্ত করতে .on () ব্যবহার করুন । JQuery এর পুরানো সংস্করণ ব্যবহারকারীদের .live () এর অগ্রাধিকার হিসাবে .delegate () ব্যবহার করা উচিত। । তাই আমি প্রতিস্থাপিত .live সঙ্গে .onঅ্যান্ডির কোডের আরও সাধারণ সংস্করণ দেখতে এখানে ক্লিক করুন । এছাড়াও, আমি আসল পৃষ্ঠায় jQuery এর আরও সাম্প্রতিক সংস্করণের জন্য সিডিএন লিঙ্কটি ব্যবহার করেছি<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.min.js"></script>
ভলকান রেভেন

98

JQuery UI ডায়ালগ পরীক্ষা করে দেখুন । আপনি এটি এর মতো ব্যবহার করবেন:

JQuery:

$(document).ready(function() {
    $("#dialog").dialog();
});

মার্কআপ:

<div id="dialog" title="Dialog Title">I'm in a dialog</div>

সম্পন্ন!

মনে রাখবেন যে এটি সেখানে সবচেয়ে সহজ ব্যবহারের ক্ষেত্রে রয়েছে, আমি ডকুমেন্টেশনটি এটি দিয়ে কী করা যায় তার সম্পর্কে আরও ভাল ধারণা পেতে পরামর্শ দেওয়ার পরামর্শ দিচ্ছি reading


জেকুরি বাদে আমাকে কোনও প্লাগইন অন্তর্ভুক্ত করতে হবে কিনা ?? @Karim
Rajasekar

8
@ রাজাসেকার - আপনাকে ডায়লগটি পেতে jQuery UI বান্ডিলটি ডাউনলোড করতে হবে এবং খুব কমপক্ষে ui.core.js এবং ui.dialog.js অন্তর্ভুক্ত করতে হবে। আপনি যদি ডায়ালগটি টেনে নেওয়ার যোগ্য এবং / অথবা পুনরায় আকার পরিবর্তন করতে চান তবে আপনাকে ui.draggable.js এবং ui.resizable.js অন্তর্ভুক্ত করতে হবে।
karim79

6
হুম। একটি jsfiddle সঙ্গে একটি ভাল উত্তর হতে হবে।
ব্রাইস

23

আমি কালারবক্স নামে একটি jQuery প্লাগইন ব্যবহার করি , এটি it

  1. ব্যবহার করা খুব সহজ
  2. লাইটওয়েট
  3. স্বনির্ধারিত
  4. আমি এখনও jQuery এর জন্য দেখেছি সেরা পপআপ ডায়ালগ





3

চূড়ান্ত লাইটওয়েট মডেল পপআপ প্লাগইন। পপেল্ট - http://welbour.com/labs/popelt/

এটি হালকা ওজনের, নেস্টেড পপআপগুলি সমর্থন করে, অবজেক্ট ওরিয়েন্টেড, গতিশীল বোতাম সমর্থন করে, প্রতিক্রিয়াশীল এবং আরও অনেক কিছু। পরবর্তী আপডেটের মধ্যে পপআপ আজাক্স ফর্ম জমাগুলি অন্তর্ভুক্ত থাকবে etc.

নির্দ্বিধায় ব্যবহার করুন এবং প্রতিক্রিয়া টুইট করুন।


2

এইচটিএমএল 5 এবং জাভাস্ক্রিপ্ট ব্যবহার করে সাধারণ পপআপ উইন্ডো।

এইচটিএমএল: -

    <dialog id="window">  
     <h3>Sample Dialog!</h3>  
     <p>Lorem ipsum dolor sit amet</p>  
     <button id="exit">Close Dialog</button>
    </dialog>  

  <button id="show">Show Dialog</button> 

জাভাস্ক্রিপ্ট: -

   (function() {  

            var dialog = document.getElementById('window');  
            document.getElementById('show').onclick = function() {  
                dialog.show();  
            };  
            document.getElementById('exit').onclick = function() {  
                dialog.close();  
            };
        })();

আমি একটি TypeError: dialog.show is not a functionত্রুটি পেয়েছি । আপনি কি একটি জেএসফিডেল অন্তর্ভুক্ত করতে পারেন?
মাগিরানু

0

এখানে একটি খুব সাধারণ পপআপ:

<!DOCTYPE html>
<html>
    <head>
        <style>
            #modal {
                position:absolute;
                background:gray;
                padding:8px;
            }

            #content {
                background:white;
                padding:20px;
            }

            #close {
                position:absolute;
                background:url(close.png);
                width:24px;
                height:27px;
                top:-7px;
                right:-7px;
            }
        </style>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script>
            var modal = (function(){
                // Generate the HTML and add it to the document
                $modal = $('<div id="modal"></div>');
                $content = $('<div id="content"></div>');
                $close = $('<a id="close" href="#"></a>');

                $modal.hide();
                $modal.append($content, $close);

                $(document).ready(function(){
                    $('body').append($modal);                       
                });

                $close.click(function(e){
                    e.preventDefault();
                    $modal.hide();
                    $content.empty();
                });
                // Open the modal
                return function (content) {
                    $content.html(content);
                    // Center the modal in the viewport
                    $modal.css({
                        top: ($(window).height() - $modal.outerHeight()) / 2, 
                        left: ($(window).width() - $modal.outerWidth()) / 2
                    });
                    $modal.show();
                };
            }());

            // Wait until the DOM has loaded before querying the document
            $(document).ready(function(){
                $('a#popup').click(function(e){
                    modal("<p>This is popup's content.</p>");
                    e.preventDefault();
                });
            });
        </script>
    </head>
    <body>
        <a id='popup' href='#'>Simple popup</a>
    </body>
</html>

এই টিউটোরিয়ালে আরও নমনীয় সমাধান পাওয়া যাবে: http://www.jacklmoore.com/notes/jquery-modal-tutorial/ নমুনার জন্য এখানে क्लोজ.পিএনজি রয়েছে


0

শুধুমাত্র সিএসএস পপআপ লোগিক! এটি করার চেষ্টা করুন। সহজ! আমি মনে করি ভবিষ্যতে এই মাইব হ্যাক জনপ্রিয় হবে

            <a href="#openModal">OPEN</a>

            <div id="openModal" class="modalDialog">
                <div>
                    <a href="#close"  class="close">X</a>
                    <h2>MODAL</h2>

                </div>
            </div>


.modalDialog {
    position: fixed;
    font-family: Arial, Helvetica, sans-serif;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background: rgba(0,0,0,0.8);
    z-index: 99999;
    -webkit-transition: opacity 400ms ease-in;
    -moz-transition: opacity 400ms ease-in;
    transition: opacity 400ms ease-in;
    display: none;
    pointer-events: none;
}

.modalDialog:target {
    display: block;
    pointer-events: auto;
}

.modalDialog > div {
    width: 400px;
    position: relative;
    margin: 10% auto;
    padding: 5px 20px 13px 20px;
    border-radius: 10px;
    background: #fff;
    background: -moz-linear-gradient(#fff, #999);
    background: -webkit-linear-gradient(#fff, #999);
    background: -o-linear-gradient(#fff, #999);
}

এটি বন্ধ হয় না!
vy32
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.