设置光标到一个textarea上的特定行的特定位置设置光标到一个textarea上的特定行的特定位置

2019-05-12 09:38发布

我想有些重复的,如Microsoft Office的Outlook程序看到的“自动更正”功能。

对于初学者来说,任何时候在一行的开头用户键入“A”(字母和空格)我想改变这种文字为“*代理[”

我已经写了这以下,如果你在textarea的从上到下敲字工作正常。 但是,如果你在文本区域键入其他地方的文本更改,然后将光标移动到textarea的结束。

我希望光标总是被放置在修改文本的末尾。

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

理想的情况是ID喜欢像

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

我能做些什么来做到这一点? 即时通信开放到JavaScript或jQuery的解决方案(虽然我觉得jQuery的有点难以阅读和理解)

如果有更好的方法来实现我的整体需要,我愿意这一点。

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

Answer 1:

我已经更新了你的提琴看到: 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设置光标位置

发生了什么(所以光标总是在最后一个位置的原因); 就是当你调用$('#systemNotesbuilder').val(arrayOfLines.join("\n")); 整个价值得到了新的价值将光标置于新的价值后覆盖。 设置光标电话是(也应该)是调用之后。



文章来源: set cursor to specific position on specific line in a textarea