使用javascript检查/取消选中无线电输入

NoO*_*lse 7 html javascript

我有一个无线电输入组.如果检查了收音机,我再次点击它就会取消选中.

有没有办法获得无线电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)

mki*_*nas 6

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个)

一个工作的例子


Har*_*arx 5

我用这个。您只需存储预点击值即可!将其转化为值。

<input type=radio name="myoptions" value="1" 
   onmousedown="this.tag = this.checked;" onclick="this.checked = !this.tag;">
Run Code Online (Sandbox Code Playgroud)


mar*_*ero 2

这种行为不是单选按钮的预期行为,我根本不推荐它。尝试寻找另一种方法来实现这一目标。使用另一个小部件或另一个选项来重置字段值:

http://jsfiddle.net/marcosfromero/rRTE8/