如果用户按住该键,则会触发多个 keydown 事件。出于可用性原因,我需要使用 keydown,而不是 keyup,但我想避免这种情况。我的相关代码如下:
$(document).keydown(function(e) {
var key = 0;
if (e == null) { key = event.keyCode;}
else { key = e.which;}
switch(key) {
case config.keys.left:
goLeft();
break;
case config.keys.up:
goUp();
break;
case config.keys.right:
goRight();
break;
case config.keys.down:
goDown();
break;
case config.keys.action:
select();
break;
}
});
因此,例如,当用户按住向下键时,goDown() 会被多次触发。即使用户按住按键,我也希望它只触发一次。
最佳答案
使用event.repeat
来检测事件是否重复。然后,您可以等待“keyup”,然后再允许处理程序第二次执行。
var allowed = true;
$(document).keydown(function(event) {
if (event.repeat != undefined) {
allowed = !event.repeat;
}
if (!allowed) return;
allowed = false;
//...
});
$(document).keyup(function(e) {
allowed = true;
});
$(document).focus(function(e) {
allowed = true;
});
关于javascript - 如何避免 JavaScript 中自动重复的按键事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7686197/