您的位置:首页 > 数据库

保存textarea编辑格式到数据库,并在div中正确显示出来

2014-05-05 16:44 323 查看
一:保存textarea编辑格式到数据库

在textarea中输入回车符 在js读取textarea中的值有\r\n然后到业务层转换到string中就有可能变成空格形式然后被存入数据库,当在取出此值的时候则会变成空格的形式,因此我们需要将不显示的\r\n替换一下。

在js取textarea的时候:

如果用


var str = document.getElementById("textarea").value;


str = str.replace("\r\n","<br>");
则只会将第一个\r\n替换成<br>,如何将所有n个\r\n替换成<br>呢?难道要无限个replace吗?

其实不用,replace可以和正则表达式结合,一次替换所有的\r\n。


var reg=new RegExp("\r\n","g");


str= str.replace(reg,"\r\n");
这样str中所有的\r\n就替换成<br>了.然后可以将其存入数据库。

在取出的时候 只用将值在替换回来即可


var reg=new RegExp("<br>","g");


stt= str.replace(reg,"\r\n");


document.getElementById("textarea").value=str;

更加详细的分析和应用可以参考JavaScript的replace方法与正则表达式结合应用讲解

下面是我写的2个函数 直接放到通用包中 以后使用可以替换


function replaceTextarea1(str){


var reg=new RegExp("\r\n","g");


var reg1=new RegExp(" ","g");




str = str.replace(reg,"<br>");


str = str.replace(reg1,"<p>");




return str;


}






function replaceTextarea2(str){


var reg=new RegExp("<br>","g");


var reg1=new RegExp("<p>","g");




str = str.replace(reg,"\r\n");


str = str.replace(reg1," ");




return str;


}
二:在div中使用<pre>标签正确显示出来
w3c对pre元素是这样定义的:pre 元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。

更详细的内容请参考 http://www.w3school.com.cn/tags/tag_pre.asp

也就是说包含在pre标签中的回车和空格会正常的显示出来。包括你在页面代码中输入的。所以如果使用pre元素你需要这样写:

<pre>要输出的文本</pre>
,而不是这样:

<pre>

要输出的文本

</pre>
后一种写法 文本前的空白也会被显示的。除非你真的希望这样
三:div标签设置为可编辑并且自动换行

word-break:break-allword-wrap:break-word都是能使其容器如DIV的内容自动换行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐