当我尝试.focus()
时,我希望将注意力放在输入元素上,并在值的最后一个字符后面看光标。我在IE中看到它。
在safari / chrome输入中获得焦点并选择所有文本。 在firefox / opera中输入获得焦点,但光标在开头。
我该怎么做才能防止这种情况并为所有浏览器获得正确的行为?
这里有一个例子:http://jsbin.com/ozojol/edit#javascript,html
PS。 focus().val('').val(value)
方法在IE中不起作用...还有哪些其他解决方法?
答案 0 :(得分:7)
您可以在大多数浏览器中使用输入的selectionStart
和selectionEnd
属性,并在IE中使用一些讨厌的TextRange
内容。 9.以下是一些改编自an answer to a similar question的代码。
代码:
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);
答案 1 :(得分:1)
有一个很棒的轻量级插件可以将插入符号移动到元素内容的末尾。的 jQuery Caret 强>
<强> Live Demo 强>
答案 2 :(得分:0)
唯一常见的行为是select()
,它会在所有主要浏览器中选择输入文本(无法确认它是否适用于所有浏览器)。