“的onchange”事件在IE延迟? (与Firefox OK)(“onchange” eve

2019-08-21 19:36发布

这可能是一个初学者的问题,但我不明白为什么onchange事件从未被称为IE,而它的工作原理确定与Firefox。

<input type="text" id="mytext" size="48" value="" onchange="execute()"/>
<button type="button" onclick="execute()">Go</button>

点击按钮,而不是当在输入框中的文本改变时,执行函数被调用。

任何的想法?

Answer 1:

IE只在触发onchange ,如果你要的元素或标签之外点击它应该会火,那么不同的元素-当元素失去焦点事件。

您可以通过使用不同的事件,例如解决这个onkeypress



Answer 2:

虽然令人讨厌,但它是不是一个错误 onchange不会触发直到元素失去焦点。 (我避开这个问题具有不同事件的多个绑定;确保不揍处理程序,如果适当使用更新汇总。)

下面是关于这个问题的“官方” W3C文档 :

当控制失去输入焦点并且由于获得焦点其值已被修改发生onchange事件。 此属性适用于以下内容:INPUT,SELECT和TEXTAREA。

这里是MSDN参考 :

当内容承诺 ,而不是当值改变这个事件 。 例如,在一个文本框,此事件不会触发当用户打字,而是[它被触发当用户提交留下具有焦点的文本框的变化

行为,而往往讨厌,是规定



Answer 3:

至于其他地方的回答,直到你点击输入框外IE不会触发事件。

只是我如何用jQuery固定它的快速expaination。 (这是我的代码的转换,因此它可能包含错误...)

<input id="somecheck" name="somecheck" value="1" onchange="dosomething();">

...改为...

<input id="somecheck" name="somecheck" value="1">

<script language="javascript">
$(document).ready(function() {

    $('#somecheck').change(function() { dosomething(); } );
});
</script>

对于那些新的jQuery的你基本上是等待页面变得完全加载,那么您要添加的事件处理程序“DoSomething的”输入框。



Answer 4:

至于我记得,IE不处理onchange事件相同满耳为FF。 单击鼠标时,该事件将被解雇。

我建议你使用一个库来处理事件,如jQuery的 , 道场等。



Answer 5:

哦~~,我还有几个月前花了一些时间在这个问题上。 我想出了这个解决方案FF / IE平变化

$("input[name*='delivery_method']").bind(($.browser.msie ? "click" : "change"), function() {
    //your code here
});


Answer 6:

IE浏览器是你的输入失去焦点,直到您单击该按钮,选项卡出来,或者点击其他地方在屏幕上是不是之后。 的onclick尝试或其他事件之一。



文章来源: “onchange” event delayed in IE? (ok with Firefox)