2012-08-31 40 views
10

我正在使用一個單選按鈕,這是一組無線電的一部分,只有一個可以一次選擇(沒有單個選擇的問題)的形式。其中一個收音機必須在每次選擇不同代碼時觸發一個代碼(未選中另一個收音機),即時使用.change方法,當您點擊代碼時它會觸發代碼,但當它丟失選擇時它將觸發代碼。我想要的是切換或能夠知道什麼時候失去選擇。jQuery組的單選按鈕.change方法

我可以做到這一點將代碼添加到其他無線電.change方法,但有很多套無線電,這將是痛苦的,我正在尋找一次性配置。

編輯

標記是這樣做ASP 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

如果你想單出一套,你可以使用'$('input [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')); 
} 

​ 

HTML

<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> 
​