это будет работать с JQuery?

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

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

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

РЕДАКТИРОВАТЬ: Я хотел бы видеть только чистые решения javascript, поэтому никаких библиотек, пожалуйста.

 KyleMit04 июл. 2014 г., 17:42
@ThiefMaster, согласился, хотя иногда бывают странные вещи, которые требуют точной настройки. Например, заполнитель-заполнитель, который обрабатывает фиктивный текст-заполнитель так, как будто он не существует.
 ThiefMaster♦17 янв. 2011 г., 18:11
Пожалуйста, не делайте этого. этонадоедливый ад если текстовые поля делают такие вещи. Если я нажму на определенную позицию, я ожидаю, что курсор будет в этой позиции; Не на каком посту разработчик сайта понравился. Автоматический выбор всего содержимого более приемлем, если это происходит сразу при его фокусировке.

Ответы на вопрос(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();
    }
}

Однако вам действительно не следует делать это всякий раз, когда пользователь щелкает текстовую область, поскольку пользователь не сможет перемещать курсор с помощью мыши. Вместо этого делайте это, когда текстовое поле получает фокус. Существует также проблема в 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);
};
 vsync14 сент. 2011 г., 10:33
хо мой плохой! извините, работает просто отлично :)
 vsync14 сент. 2011 г., 10:05
это не работает на IE9
 think12325 авг. 2012 г., 01:05
это будет работать с JQuery?
 Tim Down14 сент. 2011 г., 10:28
@vsync: я только что попробовал пример jsFiddle в IE 9, и он работал нормально. Какую проблему вы видите?
 zac198720 янв. 2012 г., 17:54
Спасибо! Это прекрасно работает для меня.

Ваш ответ на вопрос