2012-09-03 4 views
16

मैं उपयोग कर रहा हूँ JQuery मोबाइल 1.2.0 अल्फा 1.रोकें JQuery मोबाइल एक पॉपअप बंद करने जब उपयोगकर्ता इसे के बाहर टैप करता

वर्तमान में, जब मैं एक पॉपअप खोलने के लिए और स्क्रीन पर कहीं भी पॉपअप इसके बाहर नल से बंद किया जा रहा है मैं सोच रहा था कि क्या कोई JQuery मोबाइल विशेषता है जिसे मैंने याद किया है जिसे पॉप-अप को बाहरी-टैप पर बंद करना बंद कर दिया जा सकता है? (मोडल पॉपअप)

(पॉपअप के लिए प्रलेखन पाया जा सकता है here)

संपादित करें:

मैं इस के हल के लिए एक विचार था, लेकिन अभी भी काम करने के लिए इसे लागू नहीं कर सकते हैं:

जब एक जेक्यूएम पॉपअप दिखाता है तो एक div है जो यूई-पॉपअप-स्क्रीन के वर्ग के साथ सभी स्क्रीन को कवर करता है। मैंने सोचा कि किसी भी तरह से इसे एक बड़ा जेड-इंडेक्स देना है और इससे सभी क्लिक/टैप फ़ंक्शन को अनबिंड करें। ऐसा करने से मेरी समस्या हल नहीं होती है लेकिन मुझे लगता है कि यह दिशा में एक छोटा कदम है।

अग्रिम में Thnx।

उत्तर

24

इसे गिथब पर एक फीचर अनुरोध के रूप में जोड़ा गया है। समस्या here देखें।

अंतरिम में इसके लिए एक हैक के रूप में UI-popup-screen पर ईवेंट को अनदेखा करना है। मैं पेजिनिट में निम्नलिखित कोड डालूंगा।

$("#yourPopupId").on({ 
    popupbeforeposition: function() { 
     $('.ui-popup-screen').off(); 
    } 
}); 

यह एक भारी हाथ Quickfix है, लेकिन यह काम करता है।

+0

आकर्षण के रूप में काम करता है, धन्यवाद। –

+0

क्या आप जानते हैं कि मैं इसे कैसे बना सकता हूं ताकि पृष्ठभूमि अभी भी सक्षम हो? :) मैं इसे बर्खास्त नहीं कर सकता, लेकिन मैं बाकी के साथ अब भी बातचीत नहीं कर सकता। – MJB

+0

@ एमजेबी मुझे यकीन नहीं है कि आप क्या हासिल करने की कोशिश कर रहे हैं। क्या आप अभी भी उस पर विस्तार कर सकते हैं जिसके साथ आप अभी भी बातचीत करना चाहते हैं? – TheGwa

4

@ TheGwa उत्तम समाधान पर बिल्डिंग, यहाँ (संस्करण 1.3 में शायद,) आगामी सरकारी सुविधा के लिए तैयार करने के लिए एक सामान्यीकरण है:

  • सभी पॉपअप है कि आप नहीं चाहते की मार्कअप को data-dismissible='false' जोड़े उनमें से बाहर टैप करके बर्खास्त करने के लिए।

  • अपने ऐप में निम्न इवेंट हैंडलर जोड़ें; यह सभी पॉपअप संभाल लेंगे:

_

$(window).on('popupbeforeposition', 'div:jqmData(role="popup")', function() { 
     var notDismissible = $(this).jqmData('dismissible') === false; 
     if (notDismissible) { 
      $('.ui-popup-screen').off(); 
     } 
}); 

-

एक बार सुविधा आधिकारिक तौर पर समर्थित है, बस ईवेंट हैंडलर को हटा दें।

ध्यान दें, दुर्भाग्य से, (1.2) के रूप में आधिकारिक दस्तावेज पता चलता है कि उस सुविधा पहले से ही उपलब्ध है, लेकिन यह नहीं है - देखना http://jquerymobile.com/test/docs/pages/popup/options.html

19

भविष्य खोजकर्ताओं के लिए, 1.3 के रूप में, यह अब समर्थित है। बस पैनल div में data-dismissible="false" विशेषता जोड़ें।

+0

मेरे पास 1.7.13 है, लेकिन मेरे div में यह विशेषता कुछ भी नहीं है। आश्चर्य है कि मैं क्या कर सकता था गलत? – BVernon

0

निम्नलिखित तरीके से डेटा-बर्खास्त = "झूठी" जोड़ें।

<div data-role="popup" id="popupnotification" data-overlay-theme="b" data-theme="c" data-position-to="window" style="max-width:600px;"> 
+1

हम इसे क्या जोड़ते हैं। क्या आप एक उदाहरण दिखा सकते हैं – Llewellyn1411

0

@ एमजेबी -> यदि आप कहीं भी क्लिक करने में सक्षम होना चाहते हैं (उदा।एक बटन पर) जब एक पॉप-अप सक्रिय है, आप पॉप-अप की सीएसएस इस प्रकार बदल सकते हैं:

.ui-popup-screen{ 
        position: relative; 
       } 

यह मेरे लिए काम किया।

नोट: पॉप-अप अब और क्लिक पर बंद नहीं होती है जब आप यह करते हैं - मैं एक वैकल्पिक हल किए गए: - myPopup आईडी मैं दे दिया है

$(window).click(function() {  
    if ($("#myPopup-popup").hasClass("ui-popup-active")){ 
     $("#myPopup").popup("close"); 
    } 
}); 

myPopup-पॉपअप आईडी JQM द्वारा उत्पन्न होता है पॉप-अप

संबंधित मुद्दे