2012-08-31 22 views
10

मैं एक रेडियो बटन के साथ एक फॉर्म के साथ काम कर रहा हूं जो रेडियो के एक सेट का हिस्सा है और केवल एक ही समय में चयन किया जा सकता है (एकल चयन के साथ कोई समस्या नहीं)। उन रेडियो में से प्रत्येक को एक कोड को आग लगाना चाहिए जब इसे अनदेखा करते समय एक अलग कोड चुना जाता है (एक और रेडियो चुना जाता है), मैं .change विधि का उपयोग कर रहा हूं और जब आप इसे क्लिक करते हैं तो यह कोड को सक्रिय करता है, लेकिन जब यह चयन खो देता है। मैं जो चाहता हूं उसे टॉगल करना है या यह जानने में सक्षम होना चाहिए कि यह चयन कब खो देता है।रेडियो बटन का jQuery समूह। परिवर्तन विधि

मैं इसे अन्य रेडियो .change विधि में कोड जोड़ सकता हूं लेकिन रेडियो के कई सेट हैं और यह दर्दनाक होगा, मैं एक बार कॉन्फ़िगरेशन की तलाश में हूं।

संपादित

मार्कअप इस तरह एएसपी MVC उस्तरा इंजन से बना है:

@Html.RadioButtonFor(x => x.SomeModel, new { @class = "special-radio" }) 
@* Other radios but without the 'specia-radio' class *@ 

js:

// logging 
$(function(){ 
    $('.special-radio').change(function(){ 
    console.log('change'); 
    }); 
}); 

स्ट्रिंग परिवर्तन केवल आप क्लिक होकर प्रकट होता है 'विशेष -रेडियो 'रेडियो।

+1

शेयर कुछ कोड। – Gabe

उत्तर

4

आप इस तरह से रेडियो समूह पर परिवर्तन घटना का उपयोग करके ऐसा कर सकते हैं,

जांच इस सवाल का,

Monitoring when a radio button is unchecked

+0

परिवर्तन विधि उसके साथ काम नहीं कर रही है क्योंकि वह समूह के बजाय एकल रेडियो बटन पर आवेदन कर रहा है। –

3

कोई घटना शुरू हो रहा है जब एक रेडियो, अनियंत्रित है, क्योंकि यह होगा अनावश्यक। ऐसा करें:

http://jsfiddle.net/hmartiro/g4YqD/1/

यह रेडियो के सेट पर एक परिवर्तन घटना डालता है और सिर्फ एक ईवेंट सक्रिय करता है, तो चयनित रेडियो खास है और एक अन्य घटना अन्यथा।

+0

यह मेरी समस्या में पूरी तरह फिट नहीं है क्योंकि मेरे पास रेडियो के कई समूह हैं, लेकिन यह एक अच्छा प्रारंभिक बिंदु है। – loki

+0

यदि आप एक सेट को सिंगल करना चाहते हैं तो आप '$ ('इनपुट [name = foo]') का उपयोग कर सकते हैं। –

2

यदि कक्षा जोड़ने के लिए संभव नहीं है। आप इन रेडियो बटनों के लिए पहचानकर्ता के साथ एक कंटेनर का उपयोग कर सकते हैं। इस तरह आप परिवर्तन घटना को अलग कर सकते हैं। DEMO FIDDLE

var prev_data; 
$('#special_radios input').change(function(){ 
    var me = $(this); 
    //running function for check 
    $('#log').html('<p>firing event for check: '+ me.attr('id') +'</p>'); 
    if(prev_data) 
     uncheck_method(prev_data); 
    prev_data = me; 
}); 

//@param obj = jquery raidio object 
function uncheck_method(obj){ 
    $('#log').append('<p>firing event for uncheck: '+obj.attr('id')+'</p>'); 
    obj.prop('checked', false) 
    //console.log($('#special_radios input:checked')); 
} 

​ 

एचटीएमएल

<input type="radio" name="zz" id="5"/> 
<div id="special_radios"> 
    <input type="radio" name="rx" id="1"/> 
    <input type="radio" name="ry" id="2" /> 
    <input type="radio" name="rz" id="3"/> 
    <input type="radio" name="ra" id="4"/> 
</div> 
<div id="log"></div> 
​ 
संबंधित मुद्दे