通过javascript禁用和启用箭头键

我有一个场景,首先我需要禁用键盘箭头键,然后再进行一些处理启用它,为此我写了这个jquery函数

function DisableArrowKeys() { var ar = new Array(37, 38, 39, 40); $(document).keydown(function(e) { var key = e.which; if ($.inArray(key, ar) > -1) { e.preventDefault(); return false; } return true; }); } 

这个function可以禁用箭头键,经过一些处理我需要启用箭头键这个我在下面的函数中做了更改

 function EnableArrowKeys() { var ar = new Array(37, 38, 39, 40); $(document).keydown(function(e) { var key = e.which; if ($.inArray(key, ar) > -1) { return true; } }); } 

但是当我们调用该函数时,它不会启用箭头键。

您需要保留对禁用function的引用,并在准备好再次接受箭头键时取消绑定。 就像是:

 var ar = new Array(37, 38, 39, 40); var disableArrowKeys = function(e) { if ($.inArray(e.keyCode, ar)>=0) { e.preventDefault(); } } $(document).keydown(disableArrowKeys); // then when you are ready to enable, unbind the function... $(document).unbind('keydown', disableArrowKeys); 

第二个处理程序(在EnableArrowKeys函数中附加)不会取消第一个处理程序。 jQuery事件处理程序被链接:

如果注册了多个处理程序,它们将始终按照绑定的顺序执行。

因此,在EnableArrowKeys函数中使用unbind函数而不是添加另一个处理程序。

 function EnableArrowKeys() { $(document).unbind('keydown'); } 

你可以这样做:

 var DisableArrowKeys = function(e){ if ($.inArray(e.which, ar) > -1) { e.preventDefault(); return false; } return true; } $(document).bind("keydown", DisableArrowKeys); 

然后取消绑定:

 $(document).unbind("keydown", DisableArrowKeys);