Javascript 将光标设置到文本区域中特定行的特定位置
我试图在某种程度上复制Microsoft Office Outlook等程序中的“自动更正”功能 首先,每当用户在行首键入“a”(字母a和空格)时,我都希望将该文本更改为“*Agent[” 我已经写了下面的内容,如果你在文本区域从上到下打字,效果很好。但是如果你在文本区域的其他任何地方打字,文本会发生变化,然后光标会移动到文本区域的末尾。 我希望光标始终放在已更改文本的末尾 我有在变量Javascript 将光标设置到文本区域中特定行的特定位置,javascript,jquery,cursor,textarea,textselection,Javascript,Jquery,Cursor,Textarea,Textselection,我试图在某种程度上复制Microsoft Office Outlook等程序中的“自动更正”功能 首先,每当用户在行首键入“a”(字母a和空格)时,我都希望将该文本更改为“*Agent[” 我已经写了下面的内容,如果你在文本区域从上到下打字,效果很好。但是如果你在文本区域的其他任何地方打字,文本会发生变化,然后光标会移动到文本区域的末尾。 我希望光标始终放在已更改文本的末尾 我有在变量currentLineNumber中更改的行号,我知道光标需要在该行的第8个字符之后,但我不确定如何告诉它去那里
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”);
将光标放在新值之后的新值会覆盖整个值。设置光标的调用是(并且应该是)在那次电话之后。非常感谢,可能是重复的。这比我想的要轻松得多,我能理解这是怎么回事。太好了!