我有一个场景,首先我需要禁用键盘箭头键,然后再进行一些处理启用它,为此我写了这个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 EnableArrowKeys() {
var ar = new Array(37, 38, 39, 40);
$(document).keydown(function(e) {
var key = e.which;
if ($.inArray(key, ar) > -1) {
return true;
}
});
}
但是当我们调用该函数时,它不会启用箭头键。
答案 0 :(得分:3)
您需要保留对禁用功能的引用,并在准备好再次接受箭头键时取消绑定。类似的东西:
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);
答案 1 :(得分:0)
第二个处理程序(附在EnableArrowKeys
函数中)不会取消第一个处理程序。 jQuery事件处理程序被链接:
因此,在EnableArrowKeys
函数中使用unbind函数,而不是添加另一个处理程序。
function EnableArrowKeys() {
$(document).unbind('keydown');
}
答案 2 :(得分:0)
你可以这样做:
var DisableArrowKeys = function(e){
if ($.inArray(e.which, ar) > -1) {
e.preventDefault();
return false;
}
return true;
}
$(document).bind("keydown", DisableArrowKeys);
然后取消绑定:
$(document).unbind("keydown", DisableArrowKeys);