Javascript 如何使用jQuery将文本插入textarea中的特定行?
如果我有以下HTML代码:Javascript 如何使用jQuery将文本插入textarea中的特定行?,javascript,jquery,Javascript,Jquery,如果我有以下HTML代码: <textarea> line 1 text line 2 text line 3 text line 4 text line 5 text </textarea> 第1行文本 第2行文本 第3行文本 第4行文本 第5行文本 如何在第三行之后插入文本,因此我的结果如下: <textarea> line 1 text line 2 text line 3 text this is my new text here!!!!!!!!
<textarea>
line 1 text
line 2 text
line 3 text
line 4 text
line 5 text
</textarea>
第1行文本
第2行文本
第3行文本
第4行文本
第5行文本
如何在第三行之后插入文本,因此我的结果如下:
<textarea>
line 1 text
line 2 text
line 3 text
this is my new text here!!!!!!!!!
line 4 text
line 5 text
</textarea>
第1行文本
第2行文本
第3行文本
这是我的新文本!!!!!!!!!
第4行文本
第5行文本
只需.split
新行上的.val
,拼接新文本,并将值设置为。join
'd值:
let line=3;
让val=$('textarea').val().split('\n');
val.splice(第1行,第1行,“新文本”);
$('textarea').val(val.join('\n'))代码>
第1行文本
第2行文本
第3行文本
第4行文本
第5行文本
编辑:我认为您需要替换该行,而不是插入新行。
这里有一个基于相同答案的新答案
//获取值并将其拆分为行。
var linesArr=$('textarea').val().split('\n');
var-indextoinserta=3;
//在所需索引处插入新元素
linesArr.splice(indextoinsert,0,“这里是我的新文本!!!!!!!!!!!”;
//用新字符串替换该值(再次添加新行字符后)
$('textarea').val(linesArr.join('\n'))代码>
第1行文本
第2行文本
第3行文本
第4行文本
第5行文本
根据我的示例中的注释,您应该了解它是如何工作的:
//获取对jq节点的引用
变量t=$('textarea')
//获取组织str
var orgStr=t.val()
//将字符串作为数组项拆分每一行
var arr=orgStr.split('\n')
//在第3行添加“stuff”
阵列拼接(2,0,'stuff')
//加入数组并使用它
t、 val(arr.join('\n'))
textarea{
高度:400px
}
第1行文本
第2行文本
第3行文本
第4行文本
第5行文本
这可以帮助您,使用转换所有行的数组,然后使用添加到所需索引中的新行,然后再次使用更新的文本返回到文本区域
函数addLine(textarea,lineNo,line){
var lines=textarea.val().split('\n');
线。拼接(线号,0,线);
textarea.val(lines.join('\n'));
}
$(“#添加”)。在('单击',函数()上{
var textarea=$(“textarea”);
var totalines=textarea.val().split('\n').length;
var line=$(“#line”).val();
var lineNo=$(“#line_no”).val();
var inputNotEmpty=line!=''&&lineNo!='';
var validLineNum=(lineNo=0);
if(inputNotEmpty){
if(安定宁){
addLine(textarea、lineNo、line);
}否则{
log('提供有效的行号');
setTimeout('console.clear()',2000);
}
}否则{
console.log('需要新行文本和新行编号');
setTimeout('console.clear()',2000);
}
});代码>
第1行文本
第2行文本
第3行文本
第4行文本
第5行文本
添加“0”作为行号添加到文本区域的开头
在后面添加行
我们创建了一个函数,该函数接受文本和行号,用新行字符分割框内的当前文本,添加新文本,并更新textarea框
function addLine(text, line) {
let ta = document.querySelector("textarea"),
split_text = ta.textContent.split(/\n/gmi);
if (line <= split_text.length - 1) split_text.splice(line - 1, 0, text);
else split_text.push(text);
ta.textContent = split_text.join("\n");
}
addLine("This is my new text here!", 3);
addLine("This is another example!", 7);
addLine("And one more!", 2);
第1行文本
第2行文本
第3行文本
第4行文本
第5行文本
很好,您解决了OP的问题。但是你可以通过添加一个解释来改进它。这甚至不能解决问题,在这个例子中,如果行没有被覆盖,那么在行与行之间插入了文本lines@dave你是对的,我确实误解了这个问题,现在改正了。嗯,我做错了什么?请在否决投票时留下评论,这样我就可以纠正我自己的问题,为什么有人否决了你,但我投了否决票,取消了它,因为这解决了问题。我很感激@dave我在想也许我做错了什么,我看不出来。我想有人又在否决投票。你输了第2行和第3行。这是正确的答案。在我正确理解这个问题之后,我又回到了同一个问题。