我注意到"改变" 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;
这看起来很基本......也许我忽略了什么? 谢谢!
答案 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" />