2017-08-08 31 views
0

我发现代码阻止用户滚动使用键例如pgup,pgdown,选项卡,空间等时,我的画廊加载,但关闭画廊后,我需要启用这些键。你能帮助我吗?如何在keydown上启用滚动?

谢谢

这是我的代码:

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; 
}); 
} 
+0

只需添加一个测试,以确定Gallery是否对您的if打开。 – NetMage

+0

如此解除事件! – epascarello

+0

但我不知道如何...我还没有那么好的JavaScript。 –

回答

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) 

,它只会阻止按键如果画廊是开放的。

+0

谢谢!它的工作:) –

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); 
}