我正在尝试构建一种与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