繁体   English   中英

如何使用jQuery防止多次输入回车键?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM