我有一个无线电输入组.如果检查了收音机,我再次点击它就会取消选中.
有没有办法获得无线电onClick事件的先前状态?
<input name="options" type="radio" onClick="resetMeIfChecked()">
<input name="options" type="radio" onClick="resetMeIfChecked()">
<input name="options" type="radio" onClick="resetMeIfChecked()">
Run Code Online (Sandbox Code Playgroud)
jQuery版
// bind to retrieve old status
$('input[type="radio"]').mousedown(function() {
// if it was checked before
if(this.checked) {
// bind event to reset state after click is completed
$(this).mouseup(function() {
// bind param, because "this" will point somewhere else in setTimeout
var radio = this;
// apparently if you do it immediatelly, it will be overriden, hence wait a tiny bit
setTimeout(function() {
radio.checked = false;
}, 5);
// don't handle mouseup anymore unless bound again
$(this).unbind('mouseup');
});
}
});
Run Code Online (Sandbox Code Playgroud)
但同样,这并不是如何使用单选按钮.我认为你可以更好地设置一个复选框,你可以取消选中当前点击的所有其他复选框(因此总是选择最多1个)
我用这个。您只需存储预点击值即可!将其转化为值。
<input type=radio name="myoptions" value="1"
onmousedown="this.tag = this.checked;" onclick="this.checked = !this.tag;">
Run Code Online (Sandbox Code Playgroud)
这种行为不是单选按钮的预期行为,我根本不推荐它。尝试寻找另一种方法来实现这一目标。使用另一个小部件或另一个选项来重置字段值:
http://jsfiddle.net/marcosfromero/rRTE8/