La seguente funzione funzionerà in tutti i principali browser, sia per le textarea e gli ingressi di testo:
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();
}
}
Tuttavia, davvero non dovrebbe fare questo ogni volta che l'utente fa clic sul textarea, in quanto l'utente non lo farà essere in grado di spostare il cursore con il mouse. Invece, fallo quando la textarea riceve lo stato attivo. V'è anche un problema in Chrome, che può essere aggirato come segue:
esempio completa: 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's little problem
window.setTimeout(function() {
moveCaretToEnd(textarea);
}, 1);
};
fonte
2011-01-17 17:31:46
Si prega di non farlo . È ** fastidioso come l'inferno ** se i campi di testo fanno cose del genere. Se clicco in una determinata posizione, mi aspetto che il cursore si trovi in questa posizione; non in una posizione che piacesse allo sviluppatore del sito. La selezione automatica di tutti i contenuti è più accettabile a condizione che si verifichi immediatamente quando la si mette a fuoco. – ThiefMaster
@ThiefMaster, d'accordo, anche se a volte ci sono cose strane che richiedono un controllo accurato. Ad esempio, un polyfill segnaposto che considera il testo fittizio segnaposto come non esiste. – KyleMit