Textarea的新线将转换为<br/>

时间:2011-05-14 04:24:55

标签: jquery textarea newline replacewith

这里有很多关于转换br /&gt;的主题。或者保留不同语言的换行符,但关于textarea不是很多。

我有这个脚本:

var boxText = "";
$("textarea.BoxText").live('dblclick', function () {
    boxText = $(this).val().replace(/ /g, "<br/>");
  $(this).replaceWith( '<div class="BoxText">' + $(this).val() + '</div>' );

});
$("div.BoxText").live('dblclick', function () {
  $(this).replaceWith( '<textarea form="HTML" class="BoxText">' + boxText + '</textarea>' );
});

我有一个textarea元素,可编辑。当用户双击它时,它会转换为div。但是,在div中,不保留换行符。我想将新行转换为
,目前,所有空间都被转换。我有第二个脚本将其转换回textarea,因此存储字符串的变量。我还需要将这些内容重新转换为新的内容。

这看似多余,但我有充分的理由。

2 个答案:

答案 0 :(得分:79)

这会将换行符替换为HTML break标记。不同的组合将涵盖不同的浏览器/系统以及如何解释换行符。

$(this).val().replace(/\r\n|\r|\n/g,"<br />")

这将把它带回到新的界限 - 也包括不同的浏览器如何解释innerHTML。

boxText.replace(/<br\s?\/?>/g,"\n");

答案 1 :(得分:0)

我不知道这是否适合您,但是您可以尝试一下

这将<br/>转换为textarea中的新行

$(this).val().split("<br/>").join("\n");

然后将其转换回

boxText.split("\n").join("<br/>");

这对我有用