我正在嘗試構建一種與Google搜索頁面以及Gmail和其他幾個頁面(包括本頁面 - 請參閱Ask Question頁面上的「Tags」輸入)類似的表單。當輸入文本時,會出現一個選項列表,用戶可以使用向上和向下箭頭來選擇他們想要的選項。如何讓我的光標/插入符號在輸入文本元素內移動?
我遇到的問題是向上箭頭將光標/插入符號放在字段的位置0處,並向下放在最後。有沒有簡單的方法讓它不能移動到開始/結束位置,還是需要在我的函數運行之前找到插入位置,然後將其重新定位到該位置?
這是在輸入元素(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 */
}
讓我知道是否有更多的代碼會有用。謝謝您的幫助。
出於某種原因,當我打的向上箭頭,將光標返回到文本的開始。很難知道發生了什麼問題,因爲當我用螢火蟲或Chrome的工具進入代碼時,整個瀏覽器失去焦點,所以我看不到光標在哪裏以及它何時移動。 – smfoote 2010-08-05 22:15:06
@smfoote - 你試過用我上面寫的麼?你做了什麼之後你是否設置了光標*?你能發佈相關的HTML嗎? – TheCloudlessSky 2010-08-05 22:32:13
如果向上和向下箭頭需要將焦點移到其他地方,這將是有用的,但是,因爲它們不會,保存位置和恢復它似乎沒有必要。防止默認事件更容易。 – 2010-08-05 22:53:55