Следующая функция будет работать во всех основных браузерах как для текстовых областей, так и для ввода текста:
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);
};