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

IE8 amp; IE7 onchange event is triggered only after repeated selection(IE8amp;IE7 onchange 事件只有在重复选择后才会触发)
本文介绍了IE8&IE7 onchange 事件只有在重复选择后才会触发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一组带有 onchange 处理程序的收音机:

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

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

解决方案

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

如这张关于怪癖模式的表格所示,radio上的change事件按钮和复选框在 IE7 和 IE8 中相当有问题.

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

你的小提琴的一个分支:http://jsfiddle.net/T7VYL/

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

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

正如提问者的小提琴所示:http://jsfiddle.net/3zwur/3p>

I have a group of radio with an onchange handler:

<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);

}​

The problem is that in IE8 & IE7, the onchange event is triggered only after repeated selection.

Please view this demo in IE's Developer Tools [Browser Mode] IE8: http://jsfiddle.net/3zwur/2/

解决方案

This is due to a bug with IE7 and IE8's change events. You should instead listen to the click event.

As shown in this table on quirks mode, the change event on radio buttons and checkboxes is quite buggy in IE7 and IE8.

You can listen to the click event like so:

<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');">

And a fork of your fiddle: http://jsfiddle.net/T7VYL/

Usually, using a javascript library such as JQuery and YUI make your life easier, although from my testing, they do not fix this bug in older versions of IE.

If you would still like to listen to the change event, you can deploy this fix: http://www.ridgesolutions.ie/index.php/2011/03/02/ie8-chage-jquery-event-not-firing/. Basically it listens for the click event, and then causes the element to fire a change event.

As demonstrated by the asker's fiddle: http://jsfiddle.net/3zwur/3

这篇关于IE8&amp;IE7 onchange 事件只有在重复选择后才会触发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)