[英]How to prevent enter key press for multiple time using jquery?
我需要在jquery中找到连续的Enter键。 这可能吗?
$('#password-input').keyup(function(e) {
if (e.which == 13) {
alert("Enter key")
}
});
在这里,如果我多次按ENTER键,则意味着我将收到两次警报。 但是我只需要获得一次。
请帮我!
您可以使用jQuery的#绑定绑定keyup
事件,比取消绑定keyup
与事件的jQuery#解除绑定 ,当最终用户PRES的,以防止多次“回车键”“回车键”:
var $passwordInput = $('#password-input'); $passwordInput.bind('keyup', function(e) { passwordInputKeyupHandler(e); }); function passwordInputKeyupHandler(e) { if (e.which === 13) { console.log('Enter key!'); $passwordInput.unbind('keyup'); return setTimeout(function(){ console.log('Rebind keyup event'); $passwordInput.keyup(passwordInputKeyupHandler); }, 2000); } console.log('Any other key...'); }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input id="password-input" type="password">
请注意,正如@dorado在评论中指出的那样,使用setTimeout()
在2秒后进行了“重新绑定”,以避免最终用户不得不重新加载页面。
除了使用变量存储状态外,我想您还希望,如果经过了几毫秒,则再次按Enter键将向您发出警报。 这可以通过setTimeout
实现。 例如,在这里,只有在间隔2000ms之后按下回车键,才会重新检测到它。
var pressed = false;
$('#input-element').keyup(function(e) {
if (!pressed) {
if (e.which == 13) {
pressed = true;
alert('Enter pressed.');
i = setTimeout(function() {
pressed = false;
}, 2000);
}
}
});
使用变量存储状态
var pressed = false;
$('#password-input').keyup(function(e) {
if (!pressed) {
if (e.which == 13) {
pressed = true;
alert('Enter key');
}
}
});
使用.setTimeout()
设置显示警报的延迟。 在延迟时间内,如果再次按下Enter键,则删除先前的超时并设置新的超时。 在超时结束时,显示警报。
var interval; $('#password-input').keyup(function (e) { if (e.which == 13) { clearInterval(interval); interval = setTimeout(function(){ alert("Enter key") }, 500); } });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input id="password-input" />
您可以将延迟时间更改为自定义时间。
var pressed = false;
$('#password-input').on('keyup',function(e) {
if (e.which == 13 && !pressed) {
pressed = true;
alert("Enter key");
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.