矢印キーを押してli
アイテムに移動する必要があるカスタムの自動提案ボックスを作成しています。
だから私はそれがフォーカスを得ているliにtabindex属性を追加しました。しかし問題は、ランダムな高さでdivを上にスクロールして、divから選択したliを外に出すことです。
下矢印キーの後:
そして矢印キーを押した後:
その後、マウスダウンが完全に動作する間、画面から消えます。
ここで私は Demo JSFiddle を最初にクリックしましたitem1
をクリックしてから、同じように動作する矢印を押します。
コメントの詳細
コンテナのscrollTop
をindex of focused li
* li height
に設定します。
return false
キーダウン時に、オーバーフローした親の通常のブラウザスクロールを防止します。
$('div.container').on('focus', 'li', function() {
var $this = $(this);
$this.addClass('active').siblings().removeClass();
$this.closest('div.container').scrollTop($this.index() * $this.outerHeight());
}).on('keydown', 'li', function(e) {
var $this = $(this);
if (e.keyCode === 40) {
$this.next().focus();
return false;
} else if (e.keyCode === 38) {
$this.prev().focus();
return false;
}
}).find('li').first().focus();
jsfiddle http://jsfiddle.net/38zR3/42/
Tabindexの代わりにアンカーを使用してみましたか?例えば
<li><a href="#"></li>
私の経験では、一部のブラウザはtabindexへのフォーカスを正しく処理できません
私は一度そのような問題を抱えていて、それを含むdivのCSSスタイルoverflow
をnone
またはhidden
に設定に応じて設定することで解決しました。
.scrollTop()
を追加して、中央に配置するか、希望どおりに配置するかを確認します。