33

这里有很多关于转换 br/> 或跨不同语言保留换行符的线程,但关于 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,因此是用于存储字符串的变量。我也需要将
's 重新转换为新行。

这似乎是多余的,但我有一个很好的理由。

4

2 回答 2

90

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

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

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

boxText.replace(/<br\s?\/?>/g,"\n");
于 2011-05-14T04:29:04.777 回答
1

我不知道这是否适合你,但你可以试试

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

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

而这个把它转换回来

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

这对我有用

于 2020-04-15T10:09:06.243 回答