16

我正在使用一个带有单选按钮的表单,它是一组收音机的一部分,一次只能选择一个(单选没问题)。其中一个收音机必须在每次选择不同的代码时触发一个代码,当它被取消选择时(另一个收音机被选中),我正在使用.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

3 回答 3

3

There is no event triggered when a radio is unchecked, because it would be redundant. Try this instead:

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

It puts a change event on the set of radios and just fires one event if the selected radio is special and another event otherwise.

于 2012-08-31T19:07:18.770 回答
2

如果无法添加类。您可以为这些单选按钮使用带有标识符的容器。这样您就可以隔离更改事件。 演示小提琴

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>
​
于 2012-08-31T19:21:12.783 回答
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 相同,则表示没有取消选中。

于 2019-01-23T23:00:01.313 回答