如何在keydown上启用滚动?

时间:2017-08-08 18:23:03

标签: javascript jquery

我发现代码阻止用户在加载我的图库时使用键滚动,例如pgup,pgdown,tab,space等,但在关闭图库后我需要启用这些键。你能帮帮我吗?

谢谢

这是我的代码:

function disableK() {

var ar = new Array(9, 32, 33, 34, 35, 36, 37, 38, 39, 40);

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

2 个答案:

答案 0 :(得分:0)

您还可以编写enableK()函数,使用.off()删除事件处理程序:http://api.jquery.com/off/

$(document).off("keydown");

这将删除附加到document的所有处理程序。更好的方法是使用boolean标记来跟踪您的图库是否已打开,例如:

var isGalleryOpen = false;

当您关闭它时,打开图库:isGalleryOpen = true= false

然后你可以写:

if ($.inArray(key, ar) > -1 && isGalleryOpen)

如果图库已打开,它将仅阻止按键。

答案 1 :(得分:0)

您需要存储禁用密钥的函数的命名引用。然后,您可以使用该命名函数删除侦听器:

function disableKeys(e) {
    var ar = new Array(9, 32, 33, 34, 35, 36, 37, 38, 39, 40);
    var key = e.which;
    if ($.inArray(key, ar) > -1) {
        e.preventDefault();
        return false;
    }
    return true;
}

function disableK() {
    $(document).on('keydown', disableKeys);
}

function enableK() {
    $(document).off('keydown', disableKeys);
}