我们在 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 键?
最佳答案
IE9 有一个关于 onchange 事件的错误,因此也许你可以在输入上添加 onpropertychange 事件(绑定(bind)两个事件):
<input type="text" onKeyDown="this.value=this.value;" onChange="alert('test');" onpropertychange="alert('change');" />
这只是一种解决方法,希望对您有所帮助。
关于javascript - 帮助!? IE9 : onChange event doesn't fire when value is modified by an onkeydown script and user tabs away,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5510907/