通过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);