आंतरिक jQuery यूआई के संवाद के closeOnEscape
विकल्प स्वयं दस्तावेज़ के लिए एक keydown श्रोता संलग्न द्वारा कार्यान्वित किया जाता है । इसलिए, कुंजीपटल घटना शीर्ष स्तर तक सभी तरह से बुलबुले होने के बाद संवाद बंद हो जाता है।
तो यदि आप संवाद को बंद करने के लिए एस्केप कुंजी का उपयोग करना जारी रखना चाहते हैं, और आप एस्केप कुंजी को पैरेंट नोड्स में प्रचार करने से रोकना चाहते हैं, तो आपको closeOnEscape
कार्यक्षमता को स्वयं के साथ-साथ उपयोग करने की आवश्यकता होगी इवेंट ऑब्जेक्ट पर stopPropagation
विधि (MDN article on event.stopPropagation देखें)।
(function() {
var dialog = $('whatever-selector-you-need')
.dialog()
.on('keydown', function(evt) {
if (evt.keyCode === $.ui.keyCode.ESCAPE) {
dialog.dialog('close');
}
evt.stopPropagation();
});
}());
यह क्या होता है संवाद के भीतर होने वाली सभी कीडाउन घटनाओं के लिए सुनता है। यदि कुंजी दबाया जाता है तो बचने की कुंजी आप सामान्य के रूप में संवाद बंद कर देते हैं, और इससे कोई फर्क नहीं पड़ता कि evt.stopPropagation
कॉल कुंजीपटल को पैरेंट नोड्स पर बुलबुले से रोकता है।
मेरे पास यह एक लाइव उदाहरण है जो इसे दिखा रहा है - http://jsfiddle.net/ud9KL/2/।
स्रोत
2012-05-06 12:38:06
धन्यवाद। यह काम। –
यह काम नहीं करता है, मैंने आपके jsfiddle में कीडाउन फ़ंक्शन के अंदर एक साधारण अलर्ट जोड़ा है और इसे कभी भी नहीं कहा जाता है :( – Yasser
दुर्भाग्यवश बंदऑनएस्केप मेरे लिए काम नहीं करता है। लेकिन इस बाध्यकारी ने चाल की है। –