jQuery组的单选按钮.change方法

时间:2012-08-31 18:53:14

标签: jquery radio-button

我正在使用带有单选按钮的表单,该单选按钮是一组无线电的一部分,一次只能选择一个(单个选择没问题)。其中一个无线电必须在每次选择不同的代码时触发代码(当选择另一个无线电时),即时使用.change方法,当你点击它时它会触发代码,但是当它失去时它就会触发代码选择。我想要的是切换或能够知道它何时失去选择。

我可以将代码添加到其他无线电.change方法,但是有很多套无线电,这很痛苦,我正在寻找一次配置。

修改

标记由ASP MVC Razor引擎构成,如下所示:

@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');
  });
});

只有在您点击“特殊广播”电台时才会显示字符串更改。

4 个答案:

答案 0 :(得分:4)

您可以通过这种方式在电台组上使用更改事件来实现此目的,

检查这个问题,

Monitoring when a radio button is unchecked

答案 1 :(得分:3)

取消选中无线电时没有触发事件,因为这将是多余的。试试这个:

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

它在无线电设备上放置一个更改事件,如果所选的无线电是特殊的,则只触发一个事件,否则触发另一个事件。

答案 2 :(得分: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>
​

答案 3 :(得分:0)

简单的解决方案

var newValue; // vale of checked radio button
var oldValue; // value of unchecked radio button

$('.special-radio').change(function(){
    oldValue = newValue;
    newValue = $(this).val();
});

如果oldValue和newValue相同,则表示尚未取消选中。