私はかつてここで答えたもののより良い機能を作ろうとしていますが、よくわからない問題に直面しています。「キーダウン」を使用して、ユーザーが「上下矢印キーを押したまま」オプションをスクロールできるようにしたいと考えていました。奇妙な部分は、フィドルでわかるように、「キーダウン」内で意図したとおりに機能しますが、「キーアップ」に達するまでに、値がそれぞれ最初/最後のオプションの前/次のオプションに設定されることです。 .
私が言いたいことをよりよく理解するには、次のことを調べてください。
jsフィドル
わずかに代替アプローチ 同じ結果
$("select").on("keydown", function(e) {
var eKey = e.which || e.key,
selected = $(this).find("option:selected");
if (eKey == 38 && selected.is(":first")) { // up arro
$(this).val($(this).find("option").last().val());
}
else if (eKey == 40 && selected.is(":last")) { // down arro
$(this).val($(this).find("option").first().val());
}
})
うまくいくはずですが、もちろんそうではありません