2011-07-18 26 views
13

क्या एक jQuery UI संवाद के लिए एक करीबी घटना को रोकने का कोई तरीका है?jQuery यूआई संवाद - बंद करें बंद करें

मेरे पास एक फॉर्म के साथ एक संवाद मोडल है। जब उपयोगकर्ता संवाद बंद कर देता है, तो मैं "परिवर्तनों को सहेजे बिना जारी रखना" संकेत देना चाहता हूं? [हाॅं नही]। [हां] बटन जारी रहता है और अपेक्षित के रूप में संवाद बंद कर देता है। [नहीं] बटन बंद घटना को रोक देगा और संवाद को खुला रखेगा।

क्या यह संभव है?

उत्तर

36

हां, आप beforeClose विकल्प का उपयोग कर सकते हैं। docs से:

जब कोई संवाद बंद करने का प्रयास करता है तो यह ईवेंट ट्रिगर होता है। यदि पहले क्लोज़ इवेंट हैंडलर (कॉलबैक फ़ंक्शन) झूठा लौटाता है, तो बंद हो जाएगा।

कोड उदाहरण

आपूर्ति एक कॉलबैक फ़ंक्शन एक init विकल्प के रूप में BeforeClose ईवेंट को संभालने के लिए।

$(".selector").dialog({ 
    beforeClose: function(event, ui) { ... } 
}); 
+1

मैंने इसे पहले देखा लेकिन मुझे इसकी आवश्यकता के लिए इसका उपयोग करने के बारे में सोचना नहीं था। यह वास्तव में मदद की! यदि कोई उत्सुक है '$ (ele) .dialog ("बंद करें") 'पहले बंद होने का मान देता है। मेरे पास एक ऐसा कार्य था जिसने इसे बंद करने के बाद बहुत सारे काम किए और मुझे संवाद ("बंद") कॉल पर भी जांच/वापसी की आवश्यकता थी। – Marie

3

जस्टिन जवाब मोडल दिखाने के लिए ठीक काम करता है। आप बंद करने को रद्द करना चाहते हैं, तो अपने समारोह झूठी लौटना चाहिए, उस तरह:

$(".selector").dialog({ 
    beforeClose: function(event, ui) 
    { return check_if_unsaved_changes(..); } 
}); 

check_if_unsaved_changes सच लौटना चाहिए अगर संवाद बंद करें और झूठी चाहिए, अगर यह बंद नहीं करना चाहिए।

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