Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jquery防止多次按enter键?_Javascript_Jquery_Html_Keypress - Fatal编程技术网

Javascript 如何使用jquery防止多次按enter键?

Javascript 如何使用jquery防止多次按enter键?,javascript,jquery,html,keypress,Javascript,Jquery,Html,Keypress,我需要在jquery中找到连续的回车键。这可能吗 $('#password-input').keyup(function(e) { if (e.which == 13) { alert("Enter key") } }); 在这里,如果我多次按ENTER键,表示我收到两次警报。但我只需要得到一次 请帮帮我 使用变量存储状态 var pressed = false; $('#password-input').keyup(function(e) { if (

我需要在jquery中找到连续的回车键。这可能吗

$('#password-input').keyup(function(e) {
    if (e.which == 13) {
        alert("Enter key")
    }
});
在这里,如果我多次按ENTER键,表示我收到两次警报。但我只需要得到一次


请帮帮我

使用变量存储状态

var pressed = false;
$('#password-input').keyup(function(e) {
    if (!pressed) {
        if (e.which == 13) {
            pressed = true;
            alert('Enter key');
        }
    }
});
使用.setTimeout设置显示警报的延迟。在延迟时间中,如果再次按下enter键,则删除以前的超时并设置新的超时。超时结束时,显示警报

var区间; $'password-input'.keyup函数e{ 如果e.which==13{ 清晰间隔; 间隔=setTimeoutfunction{ 警报输入键 }, 500; } }; 当最终用户按下Enter键时,可以使用绑定键控事件,而不是解除键控事件的绑定,以防止多次使用Enter键:

var$passwordInput=$'password-input'; $passwordInput.bind'keyup',function e{ passwordInputKeyupHandlere; }; 函数密码InputKeyUpHandlere{ 如果e.which==13{ 控制台。记录“回车键!”; $passwordInput.unbind'keyup'; 返回setTimeoutfunction{ console.log'Rebind keyup event'; $passwordInput.keyuppasswordInputKeyupHandler; }, 2000; } 控制台。记录“任何其他键…”; }
除了使用一个变量来存储状态之外,我想您还希望,如果几毫秒过去了,那么再次按enter键会向您发出警报。这可以通过设置超时来实现。例如,此处仅当间隔2000ms后按下enter键时,才会重新检测到该键

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);

        }
    }
});

同时不止一次:您也可以使用setTimeout在几秒钟后“重新绑定”。我完全同意。。这样做主要是为了避免最终用户必须重新加载页面。我在事件处理程序函数中绑定了一个事件触发器。按下Enter键时取消绑定输入,触发ajax调用;ajax调用完成后,我将输入重新绑定到keyup。保证Ajax调用完成,因此我不会过早地重新绑定keyup,这将首先破坏执行所有这些操作的目的。它工作良好。我在这个问题上花了很多时间。非常感谢dorado。您可以将if语句简化为:if!按下&&e.which==13{…}。还请注意,无需将setTimeout分配给未定义的i变量,请使用更多信息进行编辑。不鼓励只编码并尝试此答案,因为它们不包含可搜索的内容,并且不解释为什么有人应该尝试此答案。
    var pressed = false;
    $('#password-input').on('keyup',function(e) {
        if (e.which == 13 && !pressed) {
            pressed = true;
            alert("Enter key");
        }
    });