JQuery का उपयोग करके एक साधारण पॉपअप कैसे उत्पन्न करें


217

मैं एक वेब पेज डिजाइन कर रहा हूं। जब हम div नाम की सामग्री को मेल पर क्लिक करते हैं, तो मैं लेबल ईमेल और टेक्स्ट बॉक्स वाली पॉपअप विंडो कैसे दिखा सकता हूं?


1
मुझे मौजूदा HTML या CSS को छुए बिना त्वरित अलर्ट के लिए यह उत्तर बहुत उपयोगी लगा। यह js से jQuery का उपयोग करके एक div बनाता है और दिखाता है।
मबी

जवाबों:


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);
};

और अंत में HTML:

<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 डेमो और कार्यान्वयन है।

स्थिति के आधार पर आप अजाक्स कॉल के माध्यम से पॉपअप सामग्री लोड करना चाह सकते हैं। इससे बचना सबसे अच्छा है यदि संभव हो तो सामग्री को देखने से पहले उपयोगकर्ता को अधिक महत्वपूर्ण देरी दे सकता है। यदि आप इस दृष्टिकोण को अपनाते हैं तो यहां कुछ परिवर्तन किए जाएंगे, जिन्हें आप करना चाहते हैं।

HTML बन जाता है:

<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;
});

इसके कार्य, धन्यवाद। लेकिन एक और बटन कॉल रजिस्टर शामिल करने के लिए im। जब इसे क्लिक किया जाता है, तो पंजीकरण फॉर्म पॉपअप होना चाहिए। उसके लिए मैंने एक ही फ़ंक्शन को शामिल किया और आईडी और कक्षाओं का नाम बदल दिया। समस्या यह है कि जब मैं पंजीकरण फॉर्म के करीब बटन पर क्लिक करता हूं, तो यह संपर्क फ़ॉर्म को चालू करता है। डेविस @jason सहायता चाहिए
Rajasekar

1
html को निकालने के लिए आप करीब से $ ("क्लोज़") को बदल सकते हैं। लाइव ('क्लिक', फंक्शन () {$ ("पॉप")। स्लाइडफॉगटल (); $ ("# कॉन्टैक्ट") .removeClass ("चयनित"); $ ("पॉप"); हटाएं (); // इसे जोड़ें ... झूठी वापसी;}); यह समस्या को ठीक करेगा जब आप पॉपअप को बंद करने से पहले एक बार लिंक पर क्लिक करेंगे। वैसे, अच्छा और सरल जवाब ...
जॉनक्स

10
@yahelc लगातार एक से अधिक बार "साइन अप" पर क्लिक करने का प्रयास करें, फिर "रद्द करें" पर क्लिक करें। उह oooohhhh।
AVProgrammer

मैं "महान कोड" भाग पर काफी सहमत नहीं हूं। बहुत सी सामग्री को जावास्क्रिप्ट में हार्डकोड किया गया है। हाँ, हम सभी के दिनों में हमारे ब्राउज़रों में जावास्क्रिप्ट है, लेकिन बस यह वेब करने का सही तरीका नहीं है। HTML सामग्री के लिए है, "मेकअप" के लिए js। करीम79 का जवाब मेरे नजरिए से बेहतर है। HTML में अपना मार्कअप शामिल करें जहां यह है, इसे छिपाएं, और बस इसे दिखाएं और इसे पॉपअप के रूप में लाएं। जावास्क्रिप्ट से सीधे बहुत सारे एचटीएमएल को प्रिंट करने की तुलना में बहुत क्लीनर समाधान। यदि आपको इसकी आवश्यकता नहीं है, तो आपको jQueryUI का उपयोग करने की आवश्यकता नहीं है, एक पॉपअप में कुछ सामग्री डालने के लिए एक लाख तरीके हैं
ZolaKt

12
JQuery की वेबसाइट के अनुसार , jQuery 1.7 के अनुसार, .live () विधि को पदावनत किया जाता है। ईवेंट हैंडलर संलग्न करने के लिए .on () का उपयोग करें । JQuery के पुराने संस्करणों के उपयोगकर्ताओं को .live () के लिए .delegate () का उपयोग करना चाहिए। । इसलिए मैं प्रतिस्थापित .live साथ .onएंडी कोड के अधिक सामान्य संस्करण को देखने के लिए यहां क्लिक करें । इसके अलावा, मैंने वास्तविक पेज पर jQuery के अधिक हालिया संस्करण के लिए CDN लिंक का उपयोग किया<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.min.js"></script>
vulcan raven

98

की जाँच करें jQuery यूआई संवाद । आप इसे इस तरह उपयोग करेंगे:

JQuery:

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

मार्कअप:

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

किया हुआ!

ध्यान रखें कि सबसे सरल उपयोग-मामले के बारे में है, मैं सिर्फ एक बेहतर विचार प्राप्त करने के लिए प्रलेखन पढ़ने का सुझाव दूंगा कि इसके साथ क्या किया जा सकता है।


Jquery के अलावा क्या मुझे कोई प्लगइन शामिल करना है ?? @Karim
Rajasekar

8
@Rajasekar - आपको संवाद प्राप्त करने के लिए jQuery UI बंडल डाउनलोड करना होगा और बहुत कम से कम ui.core.js और ui.dialog.js को शामिल करना होगा। यदि आप चाहते हैं कि संवाद खींचें योग्य और / या फिर आकार बदलने योग्य हो, तो आपको ui.draggable.js और ui.resizable.js शामिल करने की आवश्यकता होगी।
karim79

6
हम्म। एक jsfiddle के साथ एक बेहतर जवाब होगा।
ब्रायस

23

मैं ColorBox नामक jQuery प्लगइन का उपयोग करता हूं , यह है

  1. उपयोग करने के लिए बहुत आसान है
  2. हल्के
  3. अनुकूलन
  4. सबसे अच्छा पॉपअप संवाद मैंने अभी तक jQuery के लिए देखा है





3

बेहद हल्के मोडल पॉपअप प्लगइन। POPELT - http://welbour.com/labs/popelt/

यह हल्का है, नेस्टेड पॉपअप का समर्थन करता है, ऑब्जेक्ट ओरिएंटेड है, डायनामिक बटन, उत्तरदायी और बहुत कुछ का समर्थन करता है। अगले अपडेट में पॉपअप अजाक्स फॉर्म सबमिशन आदि शामिल होंगे।

प्रतिक्रिया का उपयोग करने और ट्वीट करने के लिए स्वतंत्र महसूस करें।


2

Html5 और जावास्क्रिप्ट का उपयोग करके सरल पॉपअप विंडो।

एचटीएमएल: -

    <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त्रुटि मिलती है । क्या आप एक JSFiddle को हटा सकते हैं?
मगिरनू

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/ यहाँ है close.png नमूने के लिए।


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 15
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.