上下矢印キーを使用してリストをナビゲートできるようにしようとしていますが、これらのキーを押すとウィンドウがスクロールして非常に迷惑になります。だから私は、このボックスがフォーカスされているときに矢印キーを使ってページの移動を無効にしたいと思う。Jquery - リストのフォーカスにある矢印キーでウィンドウのスクロールを無効にする
私が試した:
$('.selectionList').focus(function(event){
$(document).keydown(function(e) {
return false;
});
});
$('.selectionList').blur(function(event){
$(document).keydown(function(e) {
return true;
});
});
しかし、再有効化これらのキーのページに動作しませんでしたが、スクロールバーなしでスクロールしないでしょう。私が使用できるthisが見つかりましたが、これは永久にこれらのキーの使用を無効にします。これは起こりたくありません。
$( 'selectionList。')からkeyup()イベントは次のようである:。
$('.selectionList').keyup(function(event){
if (event.keyCode == 13) //enter
{
$('.listNameBox a').click();
}
else
{
if ((event.keyCode == 38) && ($(this).children('li:eq(' + ($('.selectionList li.selected').index() - 1) + ')').length > 0)) //up
{
selectListItem($(this).children('li:eq(' + ($('.selectionList li.selected').index() - 1) + ')'));
}
else if ((event.keyCode == 40) && ($(this).children('li:eq(' + ($('.selectionList li.selected').index() + 1) + ')').length > 0)) //down
{
selectListItem($(this).children('li:eq(' + ($('.selectionList li.selected').index() + 1) + ')'));
};
}
});
任意の助けをいただければ幸いです。
あなたの '.blur()'ハンドラは以前のkeydownハンドラを置き換えるものではなく、別のものを追加しています。 '' $(document).off( 'keydown') '](http://api.jquery.com/off/)または' $(document).unbind( 'keydown') 'を使用してください。以前のkeydownハンドラを_remove_するためのblur()ハンドラ – nnnnnn
ありがとうございました $( '。selectionList')。フォーカス(関数(イベント){ $(document).keydown(function(e){ return false; }); }); $( '。selectionList')。blur(function(event){ $(document).unbind( 'keydown'); }); 働くと思われる –
クール。私は答えとして自分のコメントを追加しました。 (元々はそうしていませんでした。なぜなら、問題の一部であるかどうかを確認するためにキーアップ機能を解析する時間がなかったからです。しかし、 '.unbind() – nnnnnn