如何替换textarea中的特定行?

时间:2015-04-16 16:44:15

标签: jquery replace textarea

我试图在textarea中替换一行

我尝试更改该行,以便在同一表单上的其他位置进行选择时更新该行。

我认为最好将textarea读入数组,根据需要修改数组元素,然后将其写回文本区域。

这样可行,但我将其附加到当前值,而不是替换它们。

如何更换它们?

还是有更好的方法吗?

这是文字区域:

<textarea  name="msg" id="msg"  style="height: 150px; width: 300px;">
first line is OK
sendline is also fine

new val=
this line is fine    
</textarea>

我要替换的行是new val= 我试图用new val=$('#test').val();

中的值替换它

这是我到目前为止的jquery:

$('#test').on('change', function() {
    var test = $(this).val();      
    var lines = $('#msg').val().split(/\n/);
    lines[2] = "new val= " + test;
    $.each(lines , function(i, val) { 
        $("#msg").append("\r\n" + lines[i]);
    }) 

fiddle 显示了它正在做的事情。

任何想法?

由于

2 个答案:

答案 0 :(得分:4)

您应该使用.html()将行添加到textarea或首先进行emty。 此外,您没有更改正确的行索引,也无需使用.each()遍历行,您只需使用.join()

这是一个有效的例子:

&#13;
&#13;
$(function(){
  
    $('#test').on('change', function() {
        var test = $(this).val();      
        var lines = $('#msg').val().split(/\n/);
        lines[3] = "new val= " + test;
        $("#msg").html(lines.join("\n"));
    });
  
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<select id='test' name='test'>
    <option value='1234'>1234</option>
    <option value='3456'>3456</option>
    <option value='4445'>4445</option>
</select>    
<br/><br/>

<textarea  name="msg" id="msg"  style="height: 150px; width: 300px;">
first line is OK
sendline is also fine

new val=
this line is fine    
</textarea>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

$('#msg').html('Message');

使用.html()而不是append()方法.html方法用新邮件重新填充textarea标签之间的所有内容。

.append()方法用于在元素

中添加内容

例如

<div id="content">
<p>Hello World</p>
</div>

.append() will add new content inside <div>
.html() will replace the content inside the <div>

更新

<script>

$('#test').on('change', function() {
            var test = $(this).val();      
            var lines = $('#msg').text().split(/\n/);
            lines[3] = "new val= " + test;
            $('#msg').html("");
            $.each(lines , function(i, val) { 

                $("#msg").append("\r\n" + lines[i]);
            }); 
        });
</script>

http://jsfiddle.net/84pk258r/1/

您好,请检查更新的代码现在正常运行!