मैं हाल ही में कई चेकबॉक्स के साथ काम कर रहा हूं। मैं .prevenDefault()
क्लिक ईवेंट के साथ इस 'समस्या' में आया और मैंने इसके लिए एक समाधान खोजने की कोशिश की। मेरे मामले में मैं यह तय करने में सक्षम होना चाहता था कि चेकबॉक्स को अन्य क्षेत्रों के अनुसार चेक/अनचेक किया जा सकता है या नहीं। कभी-कभी मुझे घटना से पहले एक संवाद खोलना पड़ा। यह तुलना में आसान लगता है ...Jquery चेकबॉक्स .prop रोकें क्लिक करें डीफॉल्ट व्यवहार
this jsFiddle में आप देख सकते हैं कि समस्या क्या है और मैंने इसे हल करने का प्रयास कैसे किया (नीचे कोड भी देखें)। अधिकांश उत्तरों क्लिक के बजाय परिवर्तन का उपयोग करने के लिए निहित हैं। लेकिन आप .preventdefault()
का उपयोग नहीं कर सकते हैं।
$('div').off('change','.wtf').on('change', '.wtf', function(e) {
//e.preventDefault();
//return false;
if($(this).prop('checked') == true) {
alert('I am true now, but I must stay false');
$(this).prop('checked', false);
}
else {
alert('I am false now, but I must stay true');
$(this).prop('checked', true);
}
});
क्या यह सबसे अच्छा समाधान है? या क्या चेकबॉक्स को तब तक इंतजार करने का कोई अन्य तरीका है जब तक इसे अपने राज्य को बदलने की अनुमति न हो?
उदाहरण के तौर पर: मैं चेकबॉक्स को अनचेक करना चाहूंगा यदि कोई उपयोगकर्ता 'ओके' पर क्लिक करके किसी संवाद में किसी संदेश से सहमत हो।
जवाब के लिए धन्यवाद समारोह बंद करो। फिर भी यदि आप अन्य फॉर्म तत्व हैंडलिंग के साथ तुलना करते हैं तो इन चेकबॉक्सों को कुछ हद तक अजीब लगता है ... – Brainfeeder
सच है, वे एक अलग हैं क्योंकि उनके पास मूल्य है लेकिन एक ऑन/ऑफ स्टेटस (चेक किया गया है या नहीं)। और यह उन्हें और अधिक मुश्किल बनाता है। – Spokey
यह भी ध्यान दें, फ़ायरफ़ॉक्स और क्रोम पर घटनाओं को अलग-अलग आग लगाना और बदलना। फ़ायरफ़ॉक्स: पहले क्लिक करें, फिर बदलें। क्रोम: पहले बदलें, फिर क्लिक करें। –