今天遇到的一个问题:在数据添加页面的textarea框中写入有回车换行和空格的数据,但是传到数据库之后显示到网页上的内容却没有格式,全部排成了一排网上查了很多,终于使得网页和textarea里格式保持一致了,这里记个笔记
js函数:
/**
* @funciton 转换textarea存入数据库的回车换行和空格 textarea --- 数据库,用val取数据,置换'\n'
*/
function textareaTo(str){
var reg=new RegExp("\n","g");
var regSpace=new RegExp(" ","g");
str = str.replace(reg,"<br>");
str = str.replace(regSpace," ");
return str;
}
/**
* @funciton 数据库 --- 编辑页面 .val(str)
*/
function toTextarea(str){
var reg=new RegExp("<br>","g");
var regSpace=new RegExp(" ","g");
str = str.replace(reg,"\n");
str = str.replace(regSpace," ");
return str;
}
输入框中:
<textarea id=’text’></textarea>
1)用val()获取内容:
$(‘#text’).val();
这时的内容包含:文字,回车换行:’\n’,空格:’ ‘ 但是如果直接传入数据库,格式会被去掉
2)这里使用上面转换函数: 将文本转换为了HTML的格式,’\n’ 转换为 <br/>,’ ‘ 转换为
textareaTo($(‘#text’).val());
3)然后从数据库显示到页面上:
<div id=’content’></div> //数据是data
$(‘#id’).html(data); //直接显示的就是含回车换行和空格的
4)从数据库显示到textarea中 //数据data
使用函数toTextarea()函数将html格式内容转换为文本格式:
$(‘#text’).val(toTextarea(data));
5) 前面一直使用的是val()获取textarea内容和显示内容到textarea中,所以在转换函数中用的是 :’\n’
但是当使用:$(‘#text’).text();获取内容的时候,这时的回车换行是:’\r’,所以转换函数里面的 ‘\n’ 要换成 ‘\r’,这是两个 text() 和 val() 的一个区别,注意不要混淆了,
若是’\r\n’一起使用,我测试的是失败,不能正确转换格式
原文:https://blog.csdn.net/u012606532/article/details/77802535