按下向上箭头键时,将文本光标发送到文本框焦点的末尾

时间:2015-07-28 19:00:18

标签: javascript jquery

目前,当您按下文本框中的向上箭头键时,光标会跳转到文本的开头。我想要覆盖这个功能,并在按下向上箭头键时将其设置为文本末尾。

这是我的代码:

$("#searchBox").bind("keydown", function (e) {
    if (e.which === 38) {
            searchBox.focus();
            $current.removeClass("searchBoxResultItem-active");
            searchBox.value = searchUserInput;
            searchBox.setSelectionRange(searchBox.length, searchBox.length);
        }
});

有人告诉我上面的文字会有效,但是我猜是因为箭头键已经设置为将代码设置为开头它不起作用。

如何覆盖此功能?

2 个答案:

答案 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);
        }
});

See JSFiddle Demo