Javascript:将脱字符移至最后一个字符

我有一个textarea,当我点击它时,我想把脱字符移到最后一个字符那么Something[caret]

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

我知道这是TextRange对象的某种可能性,但我真的不知道如何使用它

编辑:我很想看到只有纯粹的JavaScript解决scheme,所以没有图书馆,请。

以下function可以在所有主stream浏览器中使用,包括textareas和文本input:

 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时,你确实不应该这样做,因为用户将无法用鼠标移动插入符号。 相反,当textarea收到焦点时就做。 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); }; 
Interesting Posts