57

当我放置通过 ajax 调用加载的文本时,我有一个小问题。

我从 textarea 获取内容并将其存储在我的数据库中,当我想在 div 中显示文本时,它不尊重新行,因此所有文本都是连续的。

以下代码显示了一个小示例:

$(function() {
    $('.buttonA').click(function() {
        $('.message').html($('textarea[name="mensaje"]').val());
    });
});
.message {
    width:300px;
    height:200px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<textarea name="mensaje" class="new_message_textarea" placeholder="enter message..."></textarea>
<button class="buttonA">Enter</button>
<div class="message"></div>

如果您键入一些带有一些新行的文本,一旦您单击按钮,文本就会显示到 div 中,并且会看到没有显示新行。

我该如何解决这个问题?

4

3 回答 3

151

我认为实现这一目标的更好方法是添加

white-space: pre

或者

white-space: pre-wrap

风格给你div

请参阅:HTML - DIV 内容中的换行符是否可编辑?

于 2014-07-14T13:17:04.790 回答
29

将此添加到 CSS 中:

white-space: pre-line
于 2017-05-27T03:20:46.743 回答
16

换行符对 html 渲染没有任何作用。在你的js中改变这个:

$('.message').html($('textarea[name="mensaje"]').val());

...对此:

$('.message').html($('textarea[name="mensaje"]').val().replace(/\n/g, "<br />"));

...它会用适当的 html 换行符替换你的换行符

于 2012-07-10T23:11:10.023 回答