所以我可以使用这种方法将文本附加到textarea
document.getElementById('myArea').value += msg;
这会将新输入添加到当前输入的末尾。
假设textarea 已包含文本。假设使用“=”而不是“+ =”并且在这种情况下输入textarea已经与新值一起使用的值不是一个可能的解决方案
如何在正确的行上输入新文本到这个textarea,并且相对于已经存在的文本处于正确的位置?
以下是展示问题的YouTube视频
https://www.youtube.com/watch?v=GpwEuI3_73I&feature=youtu.be
更新 每次按下一个键时,我都会发送整个文本区域,而不是一次发送一个字母。显然在计算上更加繁重,但这是我现在唯一的解决方案。如果你有一个更好的解决方案,我仍然有兴趣听听!
答案 0 :(得分:0)
我假设您只发送最后输入的字符(如原始方法),并存储在名为“newChar”的变量中。
将此视为伪代码,但我希望它不需要进行太多更改才能实际工作:
// deserialize the text of the target textearea
var txt = targetTextarea.text;
var txtAsArray = txt.split(/\r?\n/);
var txtLine = txtAsArray[cursorRowNum];
// write the new character in the right position (but in memory)
txtLine = txtLine.substr(0, cursorColNum) + newChar + txtLine.substr(cursorColNum);
// now serialize the text back and update the target textarea
txtAsArray[cursorRowNum] = txtLine;
txt = txtAsArray.join("\n");
targetTextarea.text = txt;
使用的参考是:How in node to split string by newline ('\n')?
关于性能,这里没有额外的网络活动,我们只访问DOM两次(第一行和最后一行)。请记住,访问DOM比内存中的普通变量慢大约100倍,如http://www.phpied.com/dom-access-optimization/所示。
“txt = txtAsArray.join(”\ n“);”可能需要“txt = txtAsArray.join(”\ r \ n“);”在Windows上。根据Angel Joseph Piscola所指出的How to find the operating system version using JavaScript解释你是否在一个或另一个中。
答案 1 :(得分:-2)
嗨,这会在textarea的现有文本中添加文字 我试过了
var msg = "Hi How are you ?";
document.getElementById('myArea').value += msg;