如何从 JavaScript 中的无线电输入中获取“未检查”事件?

Posted

技术标签:

【中文标题】如何从 JavaScript 中的无线电输入中获取“未检查”事件?【英文标题】:How to get "unchecked" event from radio input in JavaScript? 【发布时间】:2017-10-10 04:20:38 【问题描述】:

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

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

理想情况下,我确实希望将输入保存在数组中,并在更改时检查是否检查了哪个输入。

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

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" />

这似乎很基本......也许我忽略了一些东西? 谢谢!

【问题讨论】:

这可能有用,***.com/questions/11173685/… 可以添加EventListener("select", .....);为你想要的更好? 好的,所以如果我没看错的话,当元素状态在 Radio 类型的输入上从选中变为未选中时,实际上永远不会触发事件?? 【参考方案1】:

它仅在 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 中的无线电输入中获取“未检查”事件?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Chrome 的 Javascript 控制台获取输入?

如何从 JavaScript 中的字符串中获取所有数字? [复制]

如何在javascript中获取从Action中传送过来的一个List集合中的某一个值呢?

如何从 Javascript 中的对象列表中获取键的值?

如何将从输入字段获取的画布名称与Javascript中的画布合并?

警察扫描无线电应用程序如何工作?具体来说,他们从哪里获取流式音频数据?