Google 検索ページ、Gmail および他のいくつかのページ (このページを含む - 質問ページの「タグ」入力を参照) と同様の方法で機能するフォームを作成しようとしています。テキストが入力されると、オプションのリストが表示され、ユーザーは上下の矢印を使用して必要なオプションを選択できます。
私が抱えている問題は、上向き矢印がカーソル/キャレットをフィールドの位置0に置き、下向き矢印が最後に置くことです。最初/最後に移動しないようにする簡単な方法はありますか、または関数が実行される前にキャレットの位置を見つけて、その場所に再配置する必要がありますか?
これは、input 要素にテキストが入力されたとき (onkeyup) に実行される関数の先頭です。
var keycode = checkKeycode (event); // returns the keycode of the key pressed.
if (keycode == 38) { // up arrow
var selection = $(".optionsSelected").attr("id");
var selId = parseInt(selection.replace('briefOption', ''));
if (selId != 0) {
$(".optionsSelected").removeClass("optionsSelected");
var newSelId = selId - 1;
$("#briefOption"+newSelId).addClass("optionsSelected");
}
}
else if (keycode == 40) { // down arrow
var selection = $(".optionsSelected").attr("id");
var selId = parseInt(selection.replace('briefOption', ''));
if (selId != numAvEmps && numAvEmps != 0) {
$(".optionsSelected").removeClass("optionsSelected");
var newSelId = selId + 1;
$("#briefOption"+newSelId).addClass("optionsSelected");
}
}
else if (keycode == 27) { // Escape
$("#docDropDown").css("display","none");
}
else if (keycode == 9 || keycode == 13) { //tab or enter
/* Fill form */
}
さらにコードが役立つかどうか教えてください。助けてくれてありがとう。