使用 jQuery 和 JSON 时如何让我的文本区域保留换行符?

发布于 2024-09-08 02:52:23 字数 467 浏览 9 评论 0原文

我有一个供用户输入评论的文本区域和一个使用 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() 确实如此似乎没有保留换行符(输入正在丢失换行符)。我该如何让它发挥作用?

I have a textarea for users to input comments and a button to submit using jQuery’s .post() and 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');

But $("#comment").val() does not seem to preserve newlines (the input is losing newlines). How do I get this to work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

月依秋水 2024-09-15 02:52:23

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

当您单击带有虚线的按钮时,此代码片段将显示一个警告框。

<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替换为

A textarea does not insert <br> tags in a users input for line breaks, rather it simply includes the newline character \n.

This snippet will show an alert box when you click the button, which has the broken line.

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

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

If you need to display these in the html page, you need to replace the \n with <br> yourself.

岁吢 2024-09-15 02:52:23

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

use $('#comment').val().replace( /\n/g, '<br \\>' );.

淡墨 2024-09-15 02:52:23

您只需要对文本区域的值使用encodeURIComponent并将其发送到服务器..当您打印出来时..如果是PHP,则可以使用nl2br

You just need to use encodeURIComponent on the value of the textarea and send it to the server..when you print it out..you can use nl2br if PHP for instance

英雄似剑 2024-09-15 02:52:23

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

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

The only solution I've found is to pass textarea data separately outside of json. Inside json it needs to be escaped like \n but this looses the new lines when you reload it from db.

So for json purposes I escape it to avoid the parsing error. Also I save this textarea field separately as it is by another (non json parsed) variable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文