Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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 如何使用jQuery将文本插入textarea中的特定行?_Javascript_Jquery - Fatal编程技术网

Javascript 如何使用jQuery将文本插入textarea中的特定行?

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!!!!!!!!

如果我有以下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!!!!!!!!!
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行。这是正确的答案。在我正确理解这个问题之后,我又回到了同一个问题。