我试图在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 显示了它正在做的事情。
任何想法?
由于
答案 0 :(得分:4)
您应该使用.html()
将行添加到textarea或首先进行emty。
此外,您没有更改正确的行索引,也无需使用.each()
遍历行,您只需使用.join()
。
这是一个有效的例子:
$(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;
答案 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/
您好,请检查更新的代码现在正常运行!