javascript - 如何从 JavaScript 中的 radio 输入中获取 "unchecked"事件?

标签 javascript html forms input radio-button

我注意到“更改”事件仅在检查元素时触发一个事件。但是在未选中时似乎不会触发任何事件,还是我错过了什么?

我想对“取消选中”做一些事情,但这永远不会触发。

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

如您所见,这是一个示例,“做某事”永远不会被解雇:

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/

相关文章:

php - Kriesi 分页不起作用

javascript - 验证动态添加的表单输入 - Vanilla JS

javascript - 如何更改包含字符串的元素之上的类?

javascript - 鼠标移动时如何使图像变色?

javascript - UIWebView 中首字母大写 (iOS)

javascript - 我无法使用 FormGroup Angular 6 发出发布请求

javascript - 如何让 "display: none"元素出现

javascript - 在php中调用带有多个参数的js函数

javascript - 在输入字段中使用 ng-model 的 Angular 获取 null

javascript - 为什么用户选中一个框与以编程方式执行不同?