IE8和IE7 onchange事件被触发只有经过反复的选择(IE8 & IE7 onchange

2019-06-25 13:06发布

我公司拥有一批具有onChange处理无线电:

<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: http://jsfiddle.net/3zwur/2/

Answer 1:

这是由于与IE7和IE8的变化事件的错误。 而应该听click事件。

如在该示出的特殊模式表 ,对单选按钮和复选框的变化事件是在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');">

而你拨弄的叉: http://jsfiddle.net/T7VYL/

通常情况下,使用JavaScript库,如JQuery的和YUI让您的生活更轻松,但是从我的测试中,他们没有在旧版本的IE修复这个bug。

如果你仍然喜欢听的变化事件,您可以部署此修复程序: http://www.ridgesolutions.ie/index.php/2011/03/02/ie8-chage-jquery-event-not-firing/ 。 基本上它侦听click事件,然后引起火灾的变化事件的元素。

这表现在提问者的小提琴: http://jsfiddle.net/3zwur/3



Answer 2:

另一种选择是有一个onchange事件,你已经有了,并添加onclick事件从单选按钮删除焦点:

<input type="radio" name="Q12" value="radio" id="Q12_0" onclick="this.blur()" onchange="nextPnl('Q12');">


Answer 3:

另一种解决方案是把onchange事件通过jQuery封闭形式。

$('#form').on('change', function() {
    $(this).submit();
});


文章来源: IE8 & IE7 onchange event is triggered only after repeated selection