在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吗?
str = str.replace( " /r/n " , " <br> " );
其实不用,replace可以和正则表达式结合,一次替换所有的/r/n。
var
reg
=
new
RegExp(
"
/r/n
"
,
"
g
"
);
str = str.replace(reg, "<br> " );
这样str中所有的/r/n就替换成<br>了.然后可以将其存入数据库。
str = str.replace(reg, "<br> " );
在取出的时候 只用将值在替换回来即可
var
reg
=
new
RegExp(
"
<br>
"
,
"
g
"
);
stt = str.replace(reg, " /r/n " );
document.getElementById( " textarea " ).value = str;
stt = str.replace(reg, " /r/n " );
document.getElementById( " textarea " ).value = str;
下面是我写的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;
}
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;
}