目前,当您按下文本框中的向上箭头键时,光标会跳转到文本的开头。我想要覆盖这个功能,并在按下向上箭头键时将其设置为文本末尾。
这是我的代码:
$("#searchBox").bind("keydown", function (e) {
if (e.which === 38) {
searchBox.focus();
$current.removeClass("searchBoxResultItem-active");
searchBox.value = searchUserInput;
searchBox.setSelectionRange(searchBox.length, searchBox.length);
}
});
有人告诉我上面的文字会有效,但是我猜是因为箭头键已经设置为将代码设置为开头它不起作用。
如何覆盖此功能?
答案 0 :(得分:3)
您的代码中有undefined
个vars。简化您的代码,这是一个有效的版本:
$("#searchBox").on("keydown", function (e) {
if (e.which === 38) {
e.preventDefault();
searchBox.setSelectionRange(searchBox.value.length, searchBox.value.length);
}
});
<强> See JSFiddle demo 强>
答案 1 :(得分:0)
将strLenght
乘以2以确保光标始终在最后结束,Opera有时会将回车视为2个字符。
$("#searchBox").bind("keydown", function (e) {
if (e.which === 38) {
e.preventDefault();
$current.removeClass("searchBoxResultItem-active");
// Multiply by 2 to ensure the cursor always ends up at the end;
// Opera sometimes sees a carriage return as 2 characters.
var strLength = $(this).val().length * 2;
this.setSelectionRange(strLength, strLength);
}
});