如何在textarea中显示带断行的字符串

时间:2017-01-26 08:30:18

标签: jquery html ajax

我可以像这样简单地设置textarea的值:

var foo='<div>Some html</div>\r\nSome html<br /><br />\r\n\r\n<div >Some html</div>\r\n</b>';
$('#my_textarea').val(foo);

并正确显示断裂线。

就我而言(与Laravel合作)我试图使用Jquery更新我的视图。我得到了上面的确切字符串作为Ajax响应。

此字符串保存在我的数据库中,我试图在所需的textarea中使用换行符显示它。在Ajax成功函数中,此方法$('#my_textarea').val(foo);完全显示String,因为它没有换行符(\r\n)。

我也尝试了这个:

$('#my_textarea').val(foo.replace(/\n/g, "<br />"));

但也无法正常工作。 我在这里缺少什么?

PS:如果我试试这个

console.log(foo);
$('#my_textarea').val(foo);// not working 
$('#my_textarea').val(copied_foo);// working -- copied_foo:I copied the foo variable from the console

更新

Ajax电话:

$.ajax({
     type: "POST",
     url: "/get_sa_data", 
     data: {selected:sa_number},
     success: function(data) {
        var description=data.description;
        console.log(description);
        $('#sa_description >textarea').val(description);//break lines not working
        //$('#sa_description >textarea').val(copied_from_above_console.log);--> works
     },
     error: function(XMLHttpRequest, textStatus, errorThrown) {
              console.log(XMLHttpRequest);
     }
  });

2 个答案:

答案 0 :(得分:0)

您应该使用&npsb代替\r<br />代替\n。你是绑定模板,所以只需要html标签。

答案 1 :(得分:0)

我为你做了这个jsFiddle,做了一个返回HTML的Ajax调用。

这是我为我的例子制作的javascript:

$.ajax({
  url: "https://baconipsum.com/api/?type=all-meat&paras=3&start-with-lorem=1&format=html",
  method: "GET",
  dataType: "HTML",
  success: function(data) {
    console.log(data);
    $("textarea").html( data.replace(/<p>/g, '').replace(/<\/p>/g, "&#10;") );
  }    
})

但在你的情况下,你应该这样替换:

$("textarea").html( data.replace(/\r\n/g, "&#10;") );

换行符"&#10;HTML EntitiesWikipédia,您还可以使用回车符&#13;