2015-04-16 51 views
1

我試圖只更換文本區域中的一行如何替換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顯示它在做什麼。

有什麼想法?

感謝

回答

3

您應該使用.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")); 
 
    }); 
 
    
 
});
<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>

+0

完美 - 非常感謝:) – JeffVader

+0

@JeffVader玩得開心! –

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

使用的.html()不追加()method.The HTML方法replacs有新郵件的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> 

UPDATE

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

您好檢查更新的代碼工作正常現在!

+0

的.html()是我認爲我需要。但是使用'#msg'會顯示'new val ='來自'$('#test')。val();'的值,而不是其中的內容, 任何方式去做 ? – JeffVader