在jQuery中将文本从textarea复制到div

时间:2011-02-11 13:54:03

标签: javascript jquery regex

我想使用此代码将文本从textarea复制到div,但缺少换行符。

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

出了什么问题? 感谢

2 个答案:

答案 0 :(得分:4)

text函数将设置文本,而不是HTML。

您需要替换生成的HTML中的换行符:

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

请注意,您无法直接从textarea设置HTML,因为这不会转义HTML标记。

此外,与PHP不同,Javascript使用正则表达式文字,因此您不能将正则表达式放在字符串中。

答案 1 :(得分:0)

我建议创建DOM节点,而不是将HTML视为字符串。规范化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]));
}