我想使用此代码将文本从textarea复制到div,但缺少换行符。
$("#some-div").text($("#some-textarea").val().replace('/\n/g', '<br />'));
出了什么问题? 感谢
答案 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]));
}