2017-08-08 9 views
0

ギャラリーがロードされているときにpgup、pgdown、tab、spaceなどのキーを使ってスクロールするのを防ぐコードが見つかりましたが、ギャラリーを閉じた後にこれらのキーを有効にする必要があります。あなたはそれで私を助けることができますか?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

ちょうどギャラリーがあなたの場合に開いているかどうかのためのテストを追加します。 – NetMage

+0

イベントをバインド解除してください! – epascarello

+0

しかし、私はどのように...私はまだjavascriptで良いではないか分からない。 –

答えて

0

ます。また、イベントハンドラを削除するために.off()を使用しますenableK()機能記述することができます:これは削除されますhttp://api.jquery.com/off/

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

は、これが私のコードであるあなたに

ありがとうございましたすべてのハンドラーはdocumentに添付されています。 isGalleryOpen = true= falseは、あなたがそれを閉じる:あなたがギャラリーを開くと

var isGalleryOpen = false; 

:より良い方法は、あなたのギャラリーがオープンであるかどうか、などを追跡しますboolean旗を持っていることであろう。

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); 
} 
関連する問題