前两天同事做了个功能,通过勾选下拉框里的值进行列表查询,结果下拉框里的值是“0<t<=2”、“2<t<=5”、“t>5”这样的。
combobox是用脚本渲染出来的,里面的data的格式就如这样:
[{ID:"01",TEXT:"0<t<=2"},{ID:"02",TEXT:"2<t<=5"},{ID:"03",TEXT:"t>5"}]
结果<小于号被识别成了html的标签,这样就导致了下拉框里显示的值都是不正常的,这里我尝试了两种解决办法:
方法一(前台还有点问题):
我从后台取到数据之后,用Java代码进行遍历,把其中的<使用String里面的replace方法换成“<”,把其中的>换成了“>”
经过这一番处理之后,我发现点击下拉按钮之后里面的内容可以正常显示了,但是当我选中其中一个之后发现内容框里面的值居然成了“0<t<=2”、“2<t<=5”、“t>5”,
这个我就没有继续再往后研究了,改用了方法二,有兴趣的可以继续沿着这条路走下去
方法二:
这次直接换到前台来处理,发现简单了很多,直接在前台用replace方法把<换成“<”,把其中的>换成了“>”,语法也很简单,只需要在渲染combobox的时候添加个formatter方法
具体代码如下:
formatter:function (row) { var text = row.TEXT; if (text.indexOf("<")){ text = text.replace("<","<"); } else if (text.indexOf(">")) { text = text.replace(">",">"); } var s = '<span style="font-weight:normal">' + text + '</span><br/>' return s; }