我有一个文本框并分配了以下功能(它是唯一分配的功能):
txt.bind("keyup",function(event){
if(event.keyCode==13)
{
var nu = $("#debug").html();
nu+="<br>enter";
$("#debug").html(nu);
}
});
奇怪的是它实际上发射了两次,因此在我的调试窗口中显示“输入”两次。 有谁知道是什么原因造成的?
我有一个文本框并分配了以下功能(它是唯一分配的功能):
txt.bind("keyup",function(event){
if(event.keyCode==13)
{
var nu = $("#debug").html();
nu+="<br>enter";
$("#debug").html(nu);
}
});
奇怪的是它实际上发射了两次,因此在我的调试窗口中显示“输入”两次。 有谁知道是什么原因造成的?
我知道这已经有一段时间了,但我很惊讶没有人建议:
txt.unbind();
txt.bind("keyup",function(event){
if(event.keyCode==13)
{
var nu = $("#debug").html();
nu+="<br>enter";
$("#debug").html(nu);
}
});
如果某种方式txt已经绑定,请致电 解除绑定 在你的新绑定应该修复它之前。当然,最好弄清楚为什么它被绑定两次。这恰好发生在我身上,因为我不小心把我的JavaScirpt文件包含了两次。召唤解除绑定帮助我确定问题所在。
我发现自己 - txt.bind被分配了两次到文本框,所以它被解雇了两次。 这是一个错误吗?我认为绑定一个函数将始终只触发一次..嗯
我有同样的问题 - KEYUP 和 KEYDOWN 事件被触发两次,虽然他们的处理程序只绑定一次,我肯定只将它们附加到一个元素。
有趣的是,这种行为只能在Internet Explorer中观察到,并且只能在我的webapp显示在嵌入式ActiveX控件(CLSID_InternetExplorer)中的一种特殊情况下观察到。操作系统:Windows 7,IE 8,嵌入式ActiveX控件在IE7兼容模式下运行。
我找到了一个解决方法 - 处理jQuery 按键 事件,在我的webapp中也更具语义感。
我有类似的问题
发现具有指定键盘功能的对象位于另一个对象内
第一个是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();
}
}
});