救命!? IE9:当onkeydown脚本和用户选项卡修改了值时,onChange事件不会触发

时间:2011-04-01 08:35:51

标签: javascript html internet-explorer events dom

我们在asp.net中有一个自定义数字文本框。在oninput事件中,检查输入的无效字符,并设置文本框的值。处理OnChange事件以在用户离开文本框后执行某些操作。这适用于firefox,chrome和IE8。

在IE9中,在上一个事件中设置文本后,onchange事件不再触发。 这就是问题所在:

<input type="text" onKeyDown="this.value=this.value;" onChange="alert('test');" />

在此示例中,onChange事件不会在IE9中触发。 无论你使用什么类型的事件,OnKeyDown,OnInput,OnPropertyChange或其他什么都没关系。当您将OnKeyDown更改为“”时,OnChange将触发。

任何想法为什么这在IE9中不再起作用,以及如何解决这个问题?谢谢!

更新:我测试了当我使用TAB键离开文本框时'onChange'是否会触发。 当您按Tab键时,onchange不会在IE9中触发,但是当您通过鼠标在表单上的某个位置离开文本框时它会触发。

那么为什么onchange事件会在用鼠标点击离开文本框时触发,而不是按Tab键?

1 个答案:

答案 0 :(得分:2)

有一个关于onchange事件的IE9的错误,因此也许你可以在输入上添加onpropertychange事件(绑定两个事件):

<input type="text" onKeyDown="this.value=this.value;" onChange="alert('test');" onpropertychange="alert('change');" />

这只是一种解决方法,希望对此有所帮助。