2017-08-08 33 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); 
}