Javascript: переместить курсор на последний символ
у меня есть textarea, и когда я нажимаю на него, я хочу переместить курсор на последний символ так Something[caret]
function moveCaret(){
// Move caret to the last character
}
<textarea onclick="moveCaret();">
Something
</textarea>
как я знаю, это как-то возможно с объектом TextRange, но я действительно не знаю, как его использовать
EDIT: Я хотел бы видеть только чистые решения javascript, поэтому никаких библиотек, пожалуйста.
1 ответов
следующая функция будет работать во всех основных браузерах, как для текстовых полей, так и для текстовых входов:
function moveCaretToEnd(el) {
if (typeof el.selectionStart == "number") {
el.selectionStart = el.selectionEnd = el.value.length;
} else if (typeof el.createTextRange != "undefined") {
el.focus();
var range = el.createTextRange();
range.collapse(false);
range.select();
}
}
однако вы действительно не должны делать это всякий раз, когда пользователь нажимает на textarea, так как пользователь не сможет переместить курсор с помощью мыши. Вместо этого сделайте это, когда textarea получает фокус. Существует также проблема в Chrome, с которой можно работать следующим образом:
полный пример: http://www.jsfiddle.net/ghAB9/3/
HTML:
<textarea id="test">Something</textarea>
сценарий:
var textarea = document.getElementById("test");
textarea.onfocus = function() {
moveCaretToEnd(textarea);
// Work around Chrome's little problem
window.setTimeout(function() {
moveCaretToEnd(textarea);
}, 1);
};