WEB前端

Textarea换行输出到前端无效果的简单有效处理方法

位置:首页 > WEB前端 > html教程,2018-03-28 10:42
在处理一些长文本的时候(仅是较长的纯字符串,还不用大动干戈使用富文本编辑器)经常会用到Textarea标签作为输入控件。<textarea name='d

在处理一些长文本的时候(仅是较长的纯字符串,还不用大动干戈使用富文本编辑器)经常会用到Textarea标签作为输入控件。

<textarea name='desc'></textarea>

Textarea作为一个输入控件有许多优点:

  • 通过CSS可以方便地调节输入框的长宽
  • 输入过长文本的时候会自动换行显示
  • 前端设置resizing属性还可以让用户自主调节输入框
  • 最好用的就是可以输入多行文本,这对于一些只需要简单段落排版的文字内容来说简直太棒了

BUT!当信心满满在排好段落保存刷新页面后。。。 
我发现换行不!见!了!只有一大串乱糟糟的文本 
但是刷新后台设置页发现,Textarea中的文本还是规规矩矩的有换行的。。。。。。

最后 
通过查找资料了解到,这是由于在Textarea控件中,换行符是‘\n’(Mac系统中是\n\r),而前端页面页面是无法直接显示这个换行的,只能显示<br/>的换行。 
资料中有许多大神提出,在做入库前对Textarea的内容进行处理,替换对应的换行符,像下边这样:

desc= odesc.value.replace(/\n|\r\n/g,"<br/>");

这样存储后输出到前端是没有问题的,但是又会出现另外一个问题,就是重新设置内容读取到Textarea控件需要再次把换行替换回去,以避免在输入框中HTML标签乱入

$desc = str_replace("<br/>",'\n',$desc);

考虑到对服务器资源的节约(扣门) 
最终在项目前端中用了这种方法:

<script> $(function(){ $("p.re-br").each(function() {  var temp =  $(this).text().replace(/\n|\r\n/g,'<br/>');
        $(this).html(temp);
    });
}); </script>

纯前端的解决办法,服务器那么累就交给客户端去解决吧,嘿嘿 
(PS请参考使用率择优选择:))

TAGS:Textarea换行

猜你喜欢

NewHot