texterea在各大浏览器中用jquery取值和赋值问题总结
测试浏览器:IETester、IE、Firefox、Chrome、Opera和Safari,五大主流浏览器。
场景一:从textarea中取值,不经过数据库,直接存到另外一个textarea中。
(对于从textarea中取值,放在div中不在讨论范围之内)
解决办法:
<textarea id="mytextarea1"></textarea>
<textarea id="mytextarea2"></textarea>
使用: $("#mytextarea2").val($("#mytextarea1").val());
备注:使用val()取值,val()赋值在IE、Firefox、Chrome、Opera和Safari浏览器都没问题。
常见问题:
场景二:从textarea中取值,存到数据库中,然后从数据库中取出放在另一个textarea中。
根据场景一知,在textarea中使用val()获取和赋值。
问题又来了:
当在一个textarea标签中键入一个回车时,实际上会插入2个符号:”\n\r”。
( \n 回车符; \r 换行符)。
如果用text()获取textarea中的值,那么存入数据库的数据就只会有”\r”;
如果用var()获取textarea中的值,那么存入数据库的数据就只会有”\n”。
<textarea id="mytextarea1"></textarea> <!—输入-->
<textarea id="mytextarea2"></textarea> <!—结果显示-->
使用: var str = $("#mytextarea1").val();
一种解决方案:
1. 思路:把textarea中回车符”\r\n”,在存入数据库之前替换成”<br/>”,在从数据库
中取出显示再替换成” \r\n”。
2. 实现:
存入数据库前:
var reg1=new RegExp("\r\n","g");
str= str.replace(reg1,"\r\n");
取出显示时:
var reg2=new RegExp("<br>","g");
str= str.replace(reg,"\r\n");
$("#mytextarea2").val(str);