Подтвердить что ты не робот

Javascript: переместить курсор на последний символ

У меня есть текстовое поле, и когда я нажимаю на него, я хочу переместить курсор на последний символ, поэтому Something[caret]

function moveCaret(){
     // Move caret to the last character
}
<textarea onclick="moveCaret();">
     Something
</textarea>

Как я знаю, это возможно с объектом TextRange, но я действительно не знаю, как его использовать

EDIT: Мне бы хотелось увидеть только чистые решения для javascript, поэтому никакие библиотеки не будут.

4b9b3361

Ответ 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 получит фокус. В Chrome также существует проблема, которая может быть решена следующим образом:

Полный пример: http://www.jsfiddle.net/ghAB9/3/

HTML:

<textarea id="test">Something</textarea>

Script:

var textarea = document.getElementById("test");
textarea.onfocus = function() {
    moveCaretToEnd(textarea);

    // Work around Chrome little problem
    window.setTimeout(function() {
        moveCaretToEnd(textarea);
    }, 1);
};