我需要可靠地检测页面上单选按钮/复选框的状态变化,以便观察表单是否被修改。现在,这是一个完全独立的脚本,我无法修改任何控制表单的内容。
目前,我只能看到两种方法:
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/