检测单选按钮/复选框状态的更改

Max*_*yko 5 javascript firefox dom

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

现在,我只能看到两种方法:

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

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

更新:正如你们所指出的那样,更改事件实际上是在复选框/单选按钮上被触发,尽管w3schools说它仅用于文本输入

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

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

Tah*_*gir 2

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

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

当复选框或单选框模糊时(而不是激活时),IE 会触发该事件。这是一个严重的错误,需要用户采取另一项操作,并阻止基于复选框和单选按钮上的更改事件的一致的跨浏览器界面。

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

  • IE 的行为不是错误,它符合 W3C HTML 规范。解决方法是对单选按钮和复选框使用单击事件,因为当它们更改状态时会触发单击事件。 (5认同)