आप एक कस्टम घटना अपेक्षाकृत दर्द बना सकते हैं "का चयन रद्द", लेकिन जैसा कि आप पहले ही खोज चुके हैं कि मानक परिवर्तन घटना केवल नए चेक किए गए रेडियो बटन पर ट्रिगर की गई है, न कि पहले चेक किए गए एक पर जिसे अभी अनचेक किया गया है।
आप कहने के लिए कुछ तरह सक्षम होने के लिए करना चाहते हैं:
$("#one").on("deselect", function() {
alert("Radio button one was just deselected");
});
फिर अपने दस्तावेज़ तैयार हैंडलर से निम्नलिखित समारोह की तरह कुछ चलाने के (या अपने दस्तावेज़ तैयार हैंडलर में सीधे कोड डाल):
function setupDeselectEvent() {
var selected = {};
$('input[type="radio"]').on('click', function() {
if (this.name in selected && this != selected[this.name])
$(selected[this.name]).trigger("deselect");
selected[this.name] = this;
}).filter(':checked').each(function() {
selected[this.name] = this;
});
}
कार्य डेमो:http://jsfiddle.net/s7f9s/2
क्या करता है एक क्लिक डालता है पृष्ठ पर सभी रेडियो पर हैंडलर (यह आपको अपने स्वयं के क्लिक ईवेंट हैंडलर को एक ही रेडियो में जोड़ने से नहीं रोकता है) जो जांच करेगा कि पहले समूह में पहले से चयनित रेडियो था (यानी, उसी नाम के साथ) और यदि तो पर रेडियो पर एक "अचयनित" ईवेंट ट्रिगर करें। फिर यह वर्तमान क्लिक के रूप में बस क्लिक किए गए एक को बचाता है। यदि आप पहले से चेक किए गए रेडियो पर क्लिक करते हैं या यदि पहले कोई चेक नहीं किया गया था तो "अचयनित करें" ईवेंट ट्रिगर नहीं किया जाता है। अंत में .filter().each()
बिट यह नोट करना है कि कौन से रेडियो पहले से ही चयनित हैं। (यदि आपको उसी पृष्ठ पर एक से अधिक फॉर्मों को एक ही नाम के स्वतंत्र रेडियो समूहों को पूरा करने की आवश्यकता है, तो तदनुसार फ़ंक्शन को अपडेट करें।)
डाउनवोट क्यों? – tskuzzy
उपयोगकर्ता रेडियो को अचयनित नहीं कर सकता ... आप क्या करना चाहते हैं? – charlietfl
उपयोगकर्ता एक रेडियो को अचयनित कर सकते हैं लेकिन एक और रेडियो बटन का चयन कर सकते हैं। – tskuzzy