javascript - IE8 & IE7 onchange事件只有在重复选择后才会触发

标签 javascript html radio-button internet-explorer-8 dom-events

我有一组带有 onchange 处理程序的 radio :

<input type="radio" name="Q12" value="radio" id="Q12_0"  onchange="nextPnl('Q12');">
<br/>
<input type="radio" name="Q12" value="radio" id="Q12_1"  onchange="nextPnl('Q12');">
         ​

function nextPnl(did)
{
document.write(did);

}​

问题是在IE8&IE7中,只有重复选择才会触发onchange事件。

请在IE的开发者工具[浏览器模式] IE8中查看此demo: http://jsfiddle.net/3zwur/2/

最佳答案

这是由于 IE7 和 IE8 的更改事件的错误。您应该改为收听 click 事件。

如图所示table on quirks mode , 单选按钮和复选框的更改事件在 IE7 和 IE8 中有很多错误。

你可以像这样监听点击事件:

<input type="radio" name="Q12" value="radio" id="Q12_0"  onclick="nextPnl('Q12');">
<br>
<input type="radio" name="Q12" value="radio" id="Q12_1"   onclick="nextPnl('Q12');">

还有你的 fiddle fork :http://jsfiddle.net/T7VYL/

通常,使用 javascript 库,例如 JQueryYUI让您的生活更轻松,尽管根据我的测试,他们没有修复旧版 IE 中的这个错误。

如果您仍想收听更改事件,可以部署此修复:http://www.ridgesolutions.ie/index.php/2011/03/02/ie8-chage-jquery-event-not-firing/ .基本上它会监听点击事件,然后使元素触发更改事件。

如提问者的 fiddle 所示:http://jsfiddle.net/3zwur/3

关于javascript - IE8 & IE7 onchange事件只有在重复选择后才会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11068196/

相关文章:

javascript - 从对象获取值并插入数组javascript

javascript - 如何根据未显示的属性将表行过滤到span中

html - 如何防止 Bootstrap 和列表中的水平滚动?

selenium - 我无法使用机器人框架单击单选按钮。(和 selenium2Library)

javascript - 单选按钮不会选中/取消选中

javascript - 解码(javascript)源 map

javascript - 使用纯 JavaScript 进行 XHR 调用

html - 如何删除最后一个 child 的边框?

javascript - 切换的奇怪情况

javascript - .checked 的问题