textarea 存储与显示 保持格式

来源:互联网 发布:网络彩票赌博怎么举报 编辑:程序博客网 时间:2024/06/03 20:58

转自:http://www.qdfuns.com/notes/16955/210b84886868d84c7de089cd5afe7a02.html


今天遇到的一个问题:在数据添加页面的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,"&nbsp;");
    
    return str;
}

/**
* @funciton  数据库 ---  编辑页面  .val(str)
*/
function toTextarea(str){
    var reg=new RegExp("<br>","g");
    var regSpace=new RegExp("&nbsp;","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/>,' ' 转换为 &nbsp;

                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'一起使用,我测试的是失败,不能正确转换格式