将光标设置到textarea中特定行的特定位置

我试图在某种程度上复制Microsoft Office的Outlook等程序中出现的“自动更正”function。

对于初学者,只要用户在一行的开头键入“a”(字母a和空格),我想将该文本更改为“* Agent [”

如果你在textarea中从上到下打字,我写下面的内容可以正常工作。 但是如果你在textarea中的任何其他地方输入文本,那么光标会移动到textarea的末尾。

我希望光标始终放在更改文本的末尾。

我有变量currentLineNumber更改的行号,我知道光标需要在该行的第8个字符之后,但我不确定如何告诉它去那里

理想情况下喜欢喜欢的东西

 function setCursor(row, position) { //.... code to set cursor } 

我该怎么做才能做到这一点? 我对javascript或jQuery解决方案开放(虽然我发现jQuery有点难以阅读和理解)

如果有更好的方法来实现我需要的整体,我也会对此持开放态度。

如果您不理解这个问题,这里有一个jsFiddle

我已经更新你的小提琴了: http : //jsfiddle.net/eghpf/2/

我添加了此方法中使用的var currentPosition

 function setSelectionRange(input, selectionStart, selectionEnd) { if (input.setSelectionRange) { input.focus(); input.setSelectionRange(selectionStart, selectionEnd); } else if (input.createTextRange) { var range = input.createTextRange(); range.collapse(true); range.moveEnd('character', selectionEnd); range.moveStart('character', selectionStart); range.select(); } } 

它来自文本区域中的jQuery Set Cursor Position

会发生什么(光标始终位于最后位置的原因); 当你调用$('#systemNotesbuilder').val(arrayOfLines.join("\n")); 使用新值将整个值覆盖,将光标放在该新值之后。 设置光标的调用是(并且应该)在该调用之后。