Javascript 如何使用jquery防止多次按enter键?
我需要在jquery中找到连续的回车键。这可能吗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 (
$('#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");
}
});