如何在textarea中保留html新行

时间:2011-10-03 07:57:24

标签: javascript jquery

我正在使用

阅读专栏内容
$("#myText").text($.trim($(this).closest('tr').next('tr').find('.mytext).text()));

但是,虽然有多个新行,但是复制的文本不会将这些行显示为新行,而是将其显示为textrea中的一行。

如果我的文字是

Line 1

Line 2

Line 3 

它出现在

Line1Line2Line3

4 个答案:

答案 0 :(得分:1)

您可能在表格单元格中发送文字内容,如:

Line 1<br/>
Line 2<br/>
Line 3<br/>

或者在单独的div中,或者在其他方法中将它拆分为单独的行。 但textarea不处理所有html标记,它只显示纯文本。对于分离线,它使用\n\r whitch表示新的车道和回车。

尝试将<br />替换为\n\r。但只有当列中的行被<br />拆分时才有用。

答案 1 :(得分:0)

使用

$("#myText").html($.trim($(this).closest('tr').next('tr').find('.mytext').text()));

你使用的.text只记录它所说的内容:“text”。您需要使用.html来保持格式化。

答案 2 :(得分:0)

看起来问题可能来自你的修剪功能。您正在修剪所有换行符。为了能够修剪它并在最后有一个换行符,你可以手动将换行符放在那里:

$("#myText").text($.trim($(this).closest('tr').next('tr').find('.mytext').text()) + "\r\n");

在对此进行了几分钟的审核之后,我不得不同意使用jsfiddle进行故障排除会更容易。目前还不完全清楚究竟发生了什么。我们必须对如何使用此代码做出很多假设。例如,我们假设

Line 1
Line 2

实际上是

Line 1<br>
Line 2<br>

应该按照你期望的方式运作。

答案 3 :(得分:0)

您的代码是否如此Line 1<br/>Line 2<br/>Line 3<br/>?如果您可以格式化html,那么尝试将其格式化为:

Line 1<br/>
Line 2<br/>
Line 3<br/>

如果你不能格式化html而不是必须使用html方法,如果#myText是textarea,那么你应该使用val方法来设置它的值。

如果您无法格式化html,那么您的代码应该看起来像这样:

$("#myText").val(
    $.trim(
        $(this).closest('tr').next('tr')
            .find('.mytext').html().replace('<br/>', '/r/n')
    )
);

更换部分更加丰富,以解决更一般的情况。