jQuery .focus()在每个浏览器中的工作方式不同.怎么预防?

Val*_*sin 5 javascript jquery focus

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

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

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

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

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

Tim*_*own 7

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

演示: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);
Run Code Online (Sandbox Code Playgroud)