Javascript / JQuery如何在按住键时防止函数重复执行?

时间:2011-03-10 00:20:34

标签: javascript jquery javascript-events keypress onkeyup

假设我们有以下JQuery代码:

$(document).bind('keyup', function(e) {

arrows=((e.which)||(e.keyCode));

switch (arrows){

case 37:

executeMyfunction();

break;

}

});

如果用户按住左箭头键(37),则重复调用executeMyfunction()。

如何防止这种情况发生?

我认为只有在密钥被释放但它无法工作时才会触发密钥(这就是为什么我使用密钥,keydown也不起作用)。

2 个答案:

答案 0 :(得分:1)

我相信你必须解开这个事件。我认为它不应该是keyup,而是keypress或keydown。

可能是这样的。

$(document).bind('keydown',function(e){

箭头=((e.which)||(e.keyCode));

开关(箭头){

案例37:

executeMyfunction();

(文档)$ .unbind( 'KEYDOWN');

中断;

} });

如果要再次使用该事件,则必须在keyup上重新绑定该功能:

$(document).bind('keyup',function(e){

开关(箭头){

案例37: (文档)$ .bind( '的keydown'); 打破; }

})

看看: http://api.jquery.com/unbind/

答案 1 :(得分:0)

嗯,您可以随时debounce调用您的函数。也就是说,如果您希望在事件未在短时间内触发后调用您的函数。