Ответ 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);
};