在处理一些长文本的时候(仅是较长的纯字符串,还不用大动干戈使用富文本编辑器)经常会用到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请参考使用率择优选择:))