我正在使用带有单选按钮的表单,该单选按钮是一组无线电的一部分,一次只能选择一个(单个选择没问题)。其中一个无线电必须在每次选择不同的代码时触发代码(当选择另一个无线电时),即时使用.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');
});
});
只有在您点击“特殊广播”电台时才会显示字符串更改。
答案 0 :(得分:4)
答案 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相同,则表示尚未取消选中。