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

Del*_*D0D 9 javascript jquery textarea cursor textselection

我试图在某种程度上复制Microsoft Office的Outlook等程序中出现的"自动更正"功能.

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

如果你在textarea中从上到下打字,我写下面的内容可以正常工作.但是,如果您在textarea中的任何其他位置键入文本,则会更改文本,然后光标移动到textarea的末尾.

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

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

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

function setCursor(row, position) {
 //.... code to set cursor 
}
Run Code Online (Sandbox Code Playgroud)

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

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

如果你不明白这个问题,这里有一个jsFiddle

Leo*_*eon 10

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

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

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();
  }
}
Run Code Online (Sandbox Code Playgroud)

这是来自文本区域中的jQuery设置光标位置

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