javascript - 在 textarea 中使用 jQuery .text() 保留换行符

标签 javascript jquery html

我有地址填<p>标签。单击编辑按钮后,我将 <p> 变为标签地址改成<textarea>允许用户编辑它。 但每当用户点击编辑时,地址文本来自<p><textarea> 中获取标签没有换行符。

HTML 标记:

<a href="" class="editShipAdd">Edit</a>
<a href="" class="saveShipAddBtn">Save</a>
    <table class="table shipping-address-table"> 
                                <tbody> 
                                    <tr>
                                        <td>
                                            <div class="jumbotron custjumbo">
      <p class="datainfo" id="shipping_address">123, Sample Street,<br>
       Sample Sample Road,<br> Bangalore, <br>Karnataka - 123xyz</p>
                                            </div>
                                        </td>
                                    </tr>
                                </tbody>
                            </table>

JS代码:

$(".editShipAdd").on("click", function(e){
    e.preventDefault();
    var datasets = $('.shipping-address-table>tbody>tr td').find(".datainfo");
    var savebtn = $('.saveShipAddBtn');
    datasets.each(function(){
      var theid   = $(this).attr("id");
      var newid   = theid+"-form";
      var currval = $(this).text().replace(/\r?\n/g, '<br />');

      console.log(currval);

        $(this).html('<textarea  name="'+newid+'" id="'+newid+'" value=""
         class="form-control">'+currval+'</textarea>');  
      });

    $(this).css("display", "none");
    savebtn.css("display", "inline-block");
  });

  $(".saveShipAddBtn").on("click", function(e){
    e.preventDefault();
    var elink   = $(this).prev(".editShipAdd");
    var datasets = $('.shipping-address-table>tbody>tr td').find(".datainfo");
    datasets.each(function(){
      var newid   = $(this).attr("id");
      var einput  = $("#"+newid+"-form");
      var newval  = einput.val().replace(/\r?\n/g, '<br />');
      console.log(newval);
      einput.remove();
      $(this).html(newval);
    });
     $(this).css("display", "none");
    elink.css("display", "inline-block");
    });

为了查看问题,我在这里创建了一个 fiddle demo

最佳答案

  1. 要换行使用 $(this).html()而不是 $(this).text() .

  2. 要在文本区域内使用换行符,请替换 <br>&#013;&#010;这是 ASCII 等效项。

这一行:

var currval = $(this).text().replace(/\r?\n/g, '<br />');

应该是:

var currval = $(this).html().replace(/<br> ?/g, '&#013;&#010;');

已更新 JSFiddle

关于javascript - 在 textarea 中使用 jQuery .text() 保留换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37297282/

相关文章:

html - 小于浏览器高度时垂直居中 div (Bootstrap)

javascript - JavaFX 2.2 WebEngine HTML 选择下拉样式

javascript - YUIDoc/javascript - 如何记录模块属性

javascript - console.log 是原子的吗?

javascript:索引期间在对象上调用了哪些函数?

javascript - 使用 Angular JS 和脚本加载器 Modernizr

javascript - jQuery AJAX POST 执行两次

javascript - 如何使用 jQuery 获取表 tds 的类名并将其写入数组?

asp.net - 如何在页面加载之前隐藏 div?

css - CSS 中的 HTML5 移动列表