Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将光标设置到文本区域中特定行的特定位置_Javascript_Jquery_Cursor_Textarea_Textselection - Fatal编程技术网

Javascript 将光标设置到文本区域中特定行的特定位置

Javascript 将光标设置到文本区域中特定行的特定位置,javascript,jquery,cursor,textarea,textselection,Javascript,Jquery,Cursor,Textarea,Textselection,我试图在某种程度上复制Microsoft Office Outlook等程序中的“自动更正”功能 首先,每当用户在行首键入“a”(字母a和空格)时,我都希望将该文本更改为“*Agent[” 我已经写了下面的内容,如果你在文本区域从上到下打字,效果很好。但是如果你在文本区域的其他任何地方打字,文本会发生变化,然后光标会移动到文本区域的末尾。 我希望光标始终放在已更改文本的末尾 我有在变量currentLineNumber中更改的行号,我知道光标需要在该行的第8个字符之后,但我不确定如何告诉它去那里

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

首先,每当用户在行首键入“a”(字母a和空格)时,我都希望将该文本更改为“*Agent[”

我已经写了下面的内容,如果你在文本区域从上到下打字,效果很好。但是如果你在文本区域的其他任何地方打字,文本会发生变化,然后光标会移动到文本区域的末尾。

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

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

理想情况下,我想

function setCursor(row, position) {
 //.... code to set cursor 
}
我能做些什么来实现这一点?我对javascript或jQuery解决方案持开放态度(尽管我发现jQuery有点难以阅读和理解)

如果有更好的方法来实现我的总体需求,我也愿意接受


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

我已经更新了您的小提琴,请参见:

我添加了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();
  }
}
这是怎么回事


发生的情况(是光标始终位于最后一个位置的原因);是调用
$(“#systemNotesbuilder”).val(arrayOfLines.join(“\n”);
将光标放在新值之后的新值会覆盖整个值。设置光标的调用是(并且应该是)在那次电话之后。

非常感谢,可能是重复的。这比我想的要轻松得多,我能理解这是怎么回事。太好了!