Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.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如何防止在按住键时重复执行函数?_Javascript_Jquery_Keypress_Jquery Events_Onkeyup - Fatal编程技术网

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

Javascript/JQuery如何防止在按住键时重复执行函数?,javascript,jquery,keypress,jquery-events,onkeyup,Javascript,Jquery,Keypress,Jquery Events,Onkeyup,假设我们有以下JQuery代码: $(document).bind('keyup', function(e) { arrows=((e.which)||(e.keyCode)); switch (arrows){ case 37: executeMyfunction(); break; } }); 如果用户按下左箭头键(37),则重复调用executeMyfuncti

假设我们有以下JQuery代码:

$(document).bind('keyup', function(e) {    
    arrows=((e.which)||(e.keyCode));    
    switch (arrows){    
       case 37:
          executeMyfunction();     
          break;    
    }    
});
如果用户按下左箭头键(37),则重复调用
executeMyfunction()

我怎样才能防止这种情况发生


我认为只有当按键被释放但不起作用时,
keyup
才会触发(这就是为什么我使用
keyup
keyup
也不起作用)。

我相信你必须解除该事件的绑定。我认为不应该是
keyup
,而是
keypress
keydown

可能是这样的

$(document).bind('keydown', function(e) {    
    arrows=((e.which)||(e.keyCode));    
    switch (arrows){    
       case 37:    
          executeMyfunction();    
          $(document).unbind('keydown');    
          break;    
    }
});
如果要再次使用事件,必须在
键控
上重新绑定函数:

$(document).bind('keyup', function(e) {        
    switch (arrows){    
      case 37:
         $(document).bind('keydown');
         break;
    }    
})
看看:
我认为你必须解开这件事。我认为不应该是
keyup
,而是
keypress
keydown

可能是这样的

$(document).bind('keydown', function(e) {    
    arrows=((e.which)||(e.keyCode));    
    switch (arrows){    
       case 37:    
          executeMyfunction();    
          $(document).unbind('keydown');    
          break;    
    }
});
如果要再次使用事件,必须在
键控
上重新绑定函数:

$(document).bind('keyup', function(e) {        
    switch (arrows){    
      case 37:
         $(document).bind('keydown');
         break;
    }    
})
看看:

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

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

你可以设置一个jsfiddle.net来显示这一点吗?这对我来说是正常的:@loannis-Hm,你的TAB键必须被打破
:)
@loannis-Afaik,keydown和keypress会重复启动,keypup不会。@loaniss你的
箭头
变量必须被声明!你可以设置一个jsfiddle.net来显示这一点吗?这对我来说是正常的:@loannis-Hm,你的TAB键必须被打破
:)
@loannis-Afaik,keydown和keypress会重复启动,keypup不会。@loaniss你的
箭头
变量必须被声明!看看这个问题,这是同样的问题,我也使用ubuntu看看这个问题,这是同样的问题,我也使用ubuntu