我注意到“更改”事件仅在检查元素时触发一个事件。但是在未选中时似乎不会触发任何事件,还是我错过了什么?
我想对“取消选中”做一些事情,但这永远不会触发。
理想情况下,我会 不是 想要将输入保存在一个数组中,并在更改时检查哪个被选中。
如您所见,这是一个示例,“做某事”永远不会被解雇:
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" />
这似乎很基本......也许我忽略了一些东西?
谢谢!
最佳答案
它仅在 targeted
时有效元素,而不是其他元素。更好地使用他们验证所有元素更改的每个功能
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" />
关于javascript - 如何从 JavaScript 中的 radio 输入中获取 "unchecked"事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43910751/