使用 jQuery 和 JSON 时,如何让我的 textarea 保留换行符?

Posted

技术标签:

【中文标题】使用 jQuery 和 JSON 时,如何让我的 textarea 保留换行符?【英文标题】:How do I get my textarea to preserve newlines when using jQuery and JSON? 【发布时间】:2011-03-11 12:45:54 【问题描述】:

我有一个文本区域供用户输入 cmets 和一个使用 jQuery 的 .post() 和 JSON 提交的按钮:

$('#submit').click(function () 
    var comment = ;
    comment.Author = $("#author").val();
    comment.Email = $("#email").val();
    comment.WebSite = $("#url").val();
    comment.Body = $("#comment").val(); // textarea

    $.post('/ajax/comments', comment, parseComment, 'json');

$("#comment").val() 似乎没有保留换行符(输入正在丢失换行符)。我如何让它发挥作用?

【问题讨论】:

【参考方案1】:

文本区域不会在用户输入中插入 <br> 标记以换行,而是仅包含换行符 \n

当您单击带有虚线的按钮时,此 sn-p 将显示一个警告框。

<script type="text/javascript">
  $(document).ready(function()
    $('#submit').click(function()  alert($('#comment').val()); )
  );
</script>

<textarea id='comment'></textarea>
<input type='submit' id='submit'/>

如果您需要在html页面中显示这些,您需要自己将\n替换为&lt;br&gt;

【讨论】:

【参考方案2】:

使用$('#comment').val().replace( /\n/g, '&lt;br \\&gt;' );

【讨论】:

【参考方案3】:

它会丢失新行吗?看看this post 可能吗?

【讨论】:

【参考方案4】:

你只需要在 textarea 的值上使用 encodeURIComponent 并将它发送到服务器..当你打印出来..你可以使用 nl2br,例如 php

【讨论】:

【参考方案5】:

我找到的唯一解决方案是在 json 之外单独传递 textarea 数据。在 json 内部,它需要像 \n 一样进行转义,但是当您从 db 重新加载它时,这会丢失新行。

因此,出于 json 的目的,我将其转义以避免解析错误。此外,我将这个 textarea 字段单独保存,因为它是由另一个(非 json 解析)变量保存的。

【讨论】:

以上是关于使用 jQuery 和 JSON 时,如何让我的 textarea 保留换行符?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jquery 解析 json 数组中的结构化数据?

如何让我的引导程序和 jquery 在 Wamp 虚拟主机中工作?

如何让我的 jQuery 插件尊重 end()?

如何让我的网页变慢? [复制]

使用browserify时如何在AngularJS中包含jQuery?

如何让我的 json 查询等待手机的位置?