如何获得"未经检查"来自JavaScript的无线电输入事件?

时间:2017-05-11 08:51:23

标签: javascript html forms input radio-button

我注意到"改变" event仅在选中元素时触发一个事件。但是,如果不加以控制似乎没有触发任何事件,或者我是否会错过任何事情?

我想在"取消选中"但这绝不会触发。

理想情况下,我想要将输入保存在数组中,并且在更改时检查哪一个被检查。

这是一个例子,你可以看到,"做某事"永远不会被解雇:



document.querySelector("input").addEventListener("change", function(ev) {
  	console.log(ev.target.checked);
    if(!ev.target.checked) console.log("do something");
});

<input type="radio" name="type" checked="checked" value="guest" />
<input type="radio" name="type" value="walk_in" />
&#13;
&#13;
&#13;

这看起来很基本......也许我忽略了什么? 谢谢!

1 个答案:

答案 0 :(得分:0)

它仅在targeted元素时验证,而不与其他元素进行验证.Better使用每个函数验证所有元素更改

document.querySelectorAll("input").forEach(function(a) {
      a.addEventListener("change", function() {
        console.log(this.checked);
         console.log("checked radio value="+this.value);
        if (!this.checked) console.log("do something");
      })
    })
<input type="radio" name="type" checked="checked" value="guest" />
<input type="radio" name="type" value="walk_in" />

或者,如果您需要验证检查并取消选中*(例如切换)*请使用type=checkbox代替radio

Radio按钮没有toggle复选框toggle

document.querySelector("input").addEventListener("change", function(ev) {
  console.log(ev.target.checked);
  if (!ev.target.checked) console.log("do something");
});
<input type="checkbox" name="type" checked="checked" value="guest" />
<input type="checkbox" name="type" value="walk_in" />