jQuery:文本框keyup触发两次

我有一个文本框并分配了以下function(它是唯一分配的function):

txt.bind("keyup",function(event){ if(event.keyCode==13) { var nu = $("#debug").html(); nu+="
enter"; $("#debug").html(nu); } });

奇怪的是它实际上发射了两次,因此在我的调试窗口中显示“输入”两次。 有谁知道是什么原因造成的?

我知道这已经有一段时间了,但我很惊讶没有人建议:

 txt.unbind(); txt.bind("keyup",function(event){ if(event.keyCode==13) { var nu = $("#debug").html(); nu+="
enter"; $("#debug").html(nu); } });

如果已经以某种方式绑定了txt,则在新绑定之前调用unbind应该修复它。 当然,最好弄清楚为什么它被绑定两次。 这恰好发生在我身上,因为我不小心把我的JavaScirpt文件包含了两次。 召唤解除绑定帮助我确定问题所在。

我发现自己 – txt.bind被分配了两次到文本框,所以它被解雇了两次。 这是一个错误吗? 我认为绑定一个函数将始终只触发一次..嗯

我遇到了同样的问题 – 虽然他们的处理程序只绑定了一次,然后我肯定只将它们附加到一个元素上,因此keyupkeydown事件被触发了两次。

有趣的是,这种行为只能在Internet Explorer中观察到,并且只能在我的webapp显示在嵌入式ActiveX控件(CLSID_InternetExplorer)中的一种特殊情况下观察到。 操作系统:Windows 7,IE 8,嵌入式ActiveX控件在IE7兼容模式下运行。

我找到了一个解决方法 – 处理jQuery的keypress事件,这在我的webapp中也更具语义意义。

我有类似的问题
发现具有指定键盘function的对象位于另一个对象内
第一个是div第二个输入
发现keyup已分配给输入和具有此输入的div

我有同样的问题。 虽然我找不到解决方案,但我发现它触发两次的原因。

如果输入的文本为“@”,我正在处理事件。为此,我列出了每个按键。 要输入’@’,您需要两个关键的前提(@ + shift),这就是它触发两次的原因。

有可能你的html元素在txt中被包含两次吗?

如果你提供html和分配javascript代码会很有帮助。

这是我对同一问题的解决方法:

 $('input').live('keyup keydown', function(e) { var thisKey = e.keyCode ? e.keyCode : e.which; if (thisKey == 13) { e.preventDefault(); e.stopPropagation(); if (e.type == 'keyup') { $(this).closest('form').submit(); } } });