5

当我尝试这样做时,.focus()我希望将焦点设置在输入元素上并在值的最后一个字符之后看到光标。我在 IE 中看到它。

在 safari/chrome 中输入获得焦点并选择所有文本。在 firefox/opera 中,输入获得焦点,但光标位于开头。

我能做些什么来防止这种情况并为所有浏览器获得正确的行为?

一个例子在这里:http: //jsbin.com/ozojol/edit#javascript,html

PS。focus().val('').val(value)方法在 IE 中不起作用...还有哪些其他解决方法?

4

3 回答 3

7

您可以在大多数浏览器中使用输入selectionStartselectionEnd属性,在 IE < 9 中使用一些讨厌的TextRange东西。这里有一些代码改编自类似问题的答案

演示:http: //jsbin.com/azapuy

代码:

function moveCaretToEnd(el) {
    if (typeof el.selectionStart == "number") {
        el.selectionStart = el.selectionEnd = el.value.length;
    } else if (typeof el.createTextRange != "undefined") {
        var range = el.createTextRange();
        range.collapse(false);
        range.select();
    }
}

var input = $('#i')[0];
input.focus();
moveCaretToEnd(input);
于 2012-07-02T15:51:31.913 回答
1

有一个很棒的轻量级插件可以将插入符号移动到元素内内容的末尾。jQuery 插入符号

现场演示

于 2012-07-02T15:42:41.793 回答
0

唯一常见的行为是select(), 在所有主要浏览器中选择输入文本(无法确认它是否适用于所有浏览器)。

于 2012-07-02T15:56:01.093 回答