昨天碰到一个问题,公司前端使用的是easyui和jquery,页面textarea编写了html代码,传入后台变成了&lt;&gt;类型代码,这样保存到数据库是没有问题的,但是在页面显示的时候需要显示原来用户输入的<>这样的字符,当然前端获取到数据的时候是&lt;&gt;这样的字符的时候会自动解析成我们想要的格式,但是当进入编辑textarea的时候数据会变成数据库中存储的&lt;&gt;形式的字符串,则需在easyui进入编辑------$('#dataGrid').datagrid('beginEdit',index);----之前将显示的字段转移成html类型的字符串。方法如下:

// 转意符换成普通字符

function escape2Html(str) {
var arrEntities={'lt':'<','gt':'>','nbsp':' ','amp':'&','quot':'"'};
return str.replace(/&(lt|gt|nbsp|amp|quot);/ig,function(all,t){return arrEntities[t];});
}

当鼠标失去焦点的时候会触发保存事件,以及onDblClickCell(index,field)事件,在$('#dataGrid').datagrid('acceptChanges');执行之后在textarea中边将原来转换成html代码解析成html则不会显示类似于字符串的html标签。而是将该字符串当成代码解析完成。所以此时需要将上次点击行中的数据转义成普通字符。

// 转意符换成普通字符

function escape2Html(str) {
var arrEntities={'lt':'<','gt':'>','nbsp':' ','amp':'&','quot':'"'};
return str.replace(/&(lt|gt|nbsp|amp|quot);/ig,function(all,t){return arrEntities[t];});
}

但是仅仅这样并不能解决问题,我使用的是这个来替代上一次点击行中的文本,如下:

$("[field='字段值']").eq(protoIndex).find("div").eq(0).text(escape2Html(字段值));

类似于后台html之间的转换可以使用org.apache.commons.lang.StringEscapeUtils类来进行转换。

// 去掉html标签

function removeHtmlTab(tab) {
return tab.replace(/<[^<>]+?>/g,'');//删除所有HTML标签
}

// &nbsp;转成空格

function nbsp2Space(str) {
var arrEntities = {'nbsp' : ' '};
return str.replace(/&(nbsp);/ig, function(all, t){return arrEntities[t]})
}

// 回车转为br标签

function return2Br(str) {
return str.replace(/\r?\n/g,"<br />");
}

// 去除开头结尾换行,并将连续3次以上换行转换成2次换行

function trimBr(str) {
str=str.replace(/((\s|&nbsp;)*\r?\n){3,}/g,"\r\n\r\n");//限制最多2次换行
str=str.replace(/^((\s|&nbsp;)*\r?\n)+/g,'');//清除开头换行
str=str.replace(/((\s|&nbsp;)*\r?\n)+$/g,'');//清除结尾换行
return str;
}

// 将多个连续空格合并成一个空格

function mergeSpace(str) {
str=str.replace(/(\s|&nbsp;)+/g,' ');
return str;
}

easyui前后台转义字符和普通字符的相互转换问题的更多相关文章

  1. java中全角半角字符的相互转换的代码

    如下内容是关于java中全角半角字符的相互转换的内容.package com.whatycms.common.util; import org.apache.commons.lang.StringUt ...

  2. unicode字符和多字节字符的相互转换接口

    作者:朱金灿 来源:http://blog.csdn.net/clever101 发现开源代码的可利用资源真多,从sqlite3的源码中抠出了几个字符转换接口,稍微改造下了发现还挺好用的.下面是实现代 ...

  3. 【转义字符】HTML 字符实体&lt; &gt: &amp;等

    在开发中遇到javascript从后台获取的url 会被转义,如:http://localhost:8080/Home/Index?a=14&b=15&c=123,想把它转成http: ...

  4. 【转义字符】HTML 字符实体&lt; &gt: &amp;

    在开发中遇到javascript从后台获取的url 会被转义,如:http://localhost:8080/Home/Index?a=14&b=15&c=123,想把它转成http: ...

  5. Mysql日期和字符的相互转换

    今天从网上查到了一些关于MySQL数据库的日期转换函数的转换的用法,在这里记录一下: mysql日期和字符相互转换 date_format(date,'%Y-%m-%d') ------------- ...

  6. easyUI前后台分页代码实现

    一.后台分页 (1)客户端代码: var dg = $('#table'); var opts = dg.datagrid('options'); var pager = dg.datagrid('g ...

  7. 关于C语言中的转义字符

    1.转义字符的分类 1. 1一般转义字符 这种转义字符,虽然在形式上由两个字符组成,但只代表一个字符.常用的一般转义字符为: \a     \n     \t     \v     \b     \r ...

  8. C#入门教程(三)–接收用户输入、转义字符、类型转换-打造C#入门教程

    上次教程主要讲解了visual stdio快捷键.变量相关的知识.具体教程戳这里:http://www.chengxiaoxiao.com/net/1027.html 越来越深入去写教程越来越发现,自 ...

  9. Char Tools,方便的字符编码转换小工具

    工作关系,常有字符编码转换方面的需要,写了这个小工具 Char Tools是一款方便的字符编码转换小工具,基于.Net Framework 2.0 Winform开发 主要功能 URL编码:URLEn ...

随机推荐

  1. 闭包(Closure)和匿名函数(Anonymous function)/lambda表达式的区别

    闭包(Closure)和匿名函数(Anonymous function)/lambda表达式的区别 函数最常见的形式是具名函数(named function): function foo(){ con ...

  2. 【算法笔记】B1044 火星数字

    1044 火星数字 (20 分)   火星人是以 13 进制计数的: 地球人的 0 被火星人称为 tret. 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, ...

  3. 扩展中国剩余定理 exCRT 学习笔记

    前言 由于 \(\{\mathrm{CRT}\}\subseteq\{\mathrm{exCRT}\}\),而且 CRT 又太抽象了,所以直接学 exCRT 了. 摘自 huyufeifei 博客 这 ...

  4. 解决Maven本地仓库没有Jar包问题,请求中央仓库自动下载以及手动下载方法

    一.首先指定本地仓库 <localRepository>D:\software\Maven_Home\mvn_repository</localRepository> 二.修改 ...

  5. genkins的报错排查

    [ERROR] /root/.jenkins/workspace/car/src/main/java/com/zhengxin/tool/code/Code.java:[20,64] diamond ...

  6. c#中的引用类型和值类型

    一,c#中的值类型和引用类型 众所周知在c#中有两种基本类型,它们分别是值类型和引用类型:而每种类型都可以细分为如下类型: 什么是值类型和引用类型 什么是值类型: 进一步研究文档,你会发现所有的结构都 ...

  7. rocketmq的消息过滤-sql方式

    通常我们会使用Tag过滤 特殊情况下我们也可以使用userproperties+TAGS过滤 , sql92定义 这两种都是在服务器端完成过滤, 对于超大数据量的场景(1小时4000W+)不要在客流端 ...

  8. 正则基础之——NFA引擎匹配原理

    记录一下一篇很好的博文:https://blog.csdn.net/lxcnn/article/details/4304651

  9. ubuntu 16.04 屏幕截图

    shift+prtsc   快捷键截取指定区域的图片 类似qq截图

  10. Robot Framework_Ride(Run标签)

    前言 我一直在想 Robot Framework 不要 RIDE 可不可以.对于编写测试用例来说,只要掌握 RobotFramework 的语法规则,随便在一个你顺手的编辑器下编写也没问题,甚至效率更 ...