避免同时使用keyup,keydown上的多个事件
我有以下代码。如果我按回车键,它会触发点击两次。如何避免多次触发事件?(Kepping keyup keydown在一起)。注意:这种情况在铬不存在的,在IE避免同时使用keyup,keydown上的多个事件
$(document).on('keyup keydown','#txtbox', function (event) { if(event.which == 13)$('#btnEnter').click(); return false;}});
我得到了最简单的解决方案。使用event.type属性。
if(event.which == 13 && event.type == 'keyup')
{
// Do some stuff. You can use event.type = 'keydown' also
}
删除的事件之一:
$(document).on('keyup', function (event) {
if(event.which == 13) $('#btnEnter').click();
});
每一个按键(现在,这是顺便说一下其他事件),同时触发和keyup
事件,不是吗?
正如我已经提到的问题,我必须找出方法从现有的代码 –
'$('#btnEnter')。click();'做什么?顺便说一句,你的意思是你不能编辑代码?你需要解释一些,为什么你必须保持这两个事件。 –
它会做阿贾克斯后 –
创建var triggered = false;
并添加
&& !triggered
要将if条件,并
triggered = true;
给你的函数,并使其再次假时,您的事件已准备好再次触发
这是我很快想出来的。这是你在追求什么?
$(document).on('keyup keydown', function (event) {
if(event.which === 13) {
$('#btnEnter').click();
}
});
$('#btnEnter').click(function() {
if ($(this).hasClass("keydown")) {
return;
}
$("div").append("I'm clicked on keydown only!<br/>");
$(this).is(".keydown") || $(this).addClass("keydown");
setTimeout(function() {
$('#btnEnter').removeClass("keydown");
}, 150);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btnEnter">I'd be clicked on enter key down</button>
<div></div>
编辑:为了支持我的意见,你可以不喜欢以下。
$.ajax({
method: "GET", // Or POST
url: "yourURL"
//other settings
}).done(function(data) {
//Do your stuff
//And then, do:
$('#btnEnter').removeClass("keydown");
});
因此,在你的ajax成功/完成功能,执行'$('#btnEnter')。removeClass(“keydown “);'。 'setTimeout'不需要,因为你需要在ajax完成后立即启用输入keydown。 – lshettyl
扩展这个片段中,当Ajax调用完成这个工程:
$(document).on('keyup keydown', function (event) {
if(event.which === 13) {
$('#btnEnter').click();
}
});
$('#btnEnter').click(function() {
if ($(this).hasClass("keydown")) {
return;
}
$("div").append("I'm clicked on keydown only!<br/>");
$(this).is(".keydown") || $(this).addClass("keydown");
$.ajaxComplete(function() {
$('#btnEnter').removeClass("keydown");
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btnEnter">I'd be clicked on enter key down</button>
<div></div>
为什么你需要捕获这两个事件? –
@ Claudio Redi我已经写了Textbox验证来限制进入maxlength。我的项目已经有这个代码。我现在不能改变它。我需要从现有的代码中找出一些方法。 –
如果不是上面的发布代码,你可以在哪里进行更改? – lshettyl