2011-02-11 34 views
1

我想使用此代碼將文本從textarea複製到div,但缺少換行符。應對來自textarea的文本到div中的jQuery

$("#some-div").text($("#some-textarea").val().replace('/\n/g', '<br />')); 

怎麼回事? 謝謝

+0

這是http://stackoverflow.com/questions/的重複4870256 /怎麼辦 - 你 - 保存最換行符-IN-A-textarea的功能於jQuery的。 – Neil 2011-02-11 14:33:35

回答

4

text函數將設置文本,而不是HTML。

您需要在生成的HTML替換換行符:

$("#some-div").text($("#some-textarea").val()) 
       .html(function(index, old) { return old.replace(/\n/g, '<br />') }); 

請注意,您無法從文本區域直接設置HTML,因爲這將無法逃脫的HTML標籤。

另外,與PHP不同,Javascript使用正則表達式文字,因此您不能將正則表達式放入字符串中。

+0

+1教導我們,謝謝。 – YOU 2011-02-11 14:20:58

0

與其將HTML視爲字符串,我會建議創建DOM節點。歸一化值的textarea(IE使用\r\n而非\n),分割上換行符textarea的值,並創建由<br>元件分隔的文本節點:

var div = $("#some-div")[0]; 
var lines = $("#some-textarea").val().replace(/\r\n/g, "\n").split("\n"); 
for (var i = 0, len = lines.length; i < len; ++i) { 
    if (i) div.appendChild(document.createElement("br")); 
    div.appendChild(document.createTextNode(lines[i])); 
}