javascript - 检测单选按钮/复选框状态的变化

标签 javascript firefox dom

我需要可靠地检测页面上单选按钮/复选框的状态变化,以便观察表单是否被修改。现在,这是一个完全独立的脚本,我无法修改任何控制表单的内容。

目前,我只能看到两种方法:

  • onchange 事件处理程序,有助于处理文本框、文本区域和选择,但不会针对复选框/单选按钮触发
  • onclick 事件处理程序,这是不可靠的,因为用户经常使用热键来更改这些元素的值。

我在这里错过了什么?有没有办法可靠地检测复选框是否已选中/未选中?

更新: 正如你们所指出的,change 事件实际上是在复选框/单选按钮上触发的,尽管 w3schools 说它仅适用于 text inputs

但是,我的问题原来是复选框/单选按钮的值是通过脚本中的 setAttribute 设置的,在这种情况下事件不会被触发。

在这种情况下我能做些什么吗?

最佳答案

参见:http://www.quirksmode.org/dom/events/change.html .

它说所有主流浏览器都支持更改事件,但 IE 的实现有问题。

IE fires the event when the checkbox or radio is blurred, and not when it is activated. This is a serious bug that requires the user to take another action and prevents a consistent cross-browser interface based on the change event on checkboxes and radios.

我认为你可以用这个技巧克服 IE 的错误。 blur() 元素聚焦时! (在 jQuery 中使用类似 $('input[type=radio]').focus(function(){$(this).blur();}); 的东西或使用纯 javascript)

关于javascript - 检测单选按钮/复选框状态的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5613278/

相关文章:

javascript - 使用 JS DOM 将 html 标签替换为另一个标签

java - 我可以在 Java 中使用 for-each 遍历 NodeList 吗?

javascript - 如何在阴影根中获取元素?

javascript - PHP - 是否可以在一个文件中获取动态生成的值,以便在 if 语句中在另一个文件中使用?

javascript - 可能的 Angular 属性指令错误?

javascript - 在Ajax中如何将html页面中的国家名称传递到php页面?

javascript - 您可以在 Firefox 上暂停离线音频上下文吗?

javascript - 在不实例化对象的情况下检测 Internet Explorer 中的插件

javascript - IE 中元素的垂直定位(堆叠)不正确

javascript - 当我更改其在 DOM 中的位置时,如何停止重新加载 iframe?