Select2用法简介
2015-09-23 15:14
120 查看
按照产品汪的要求终于做完了数据展示,前台后台一锅端的感觉只有试过才知道~
谁知道提测完毕汪又要求加上按产品名称模糊搜索功能(怨念
),后台代码当然是简单又轻松,但是前台的搜索框怎么搞!
学校里主要研习后端但是在公司还要兼做前段,捯饬JS着实头疼啊~
但是又不能不搞,现成代码相当多,但是注释以及方法参数的解释都十分的少,导致像我这么笨的人学起来相当吃力啊
好在有时间乐的自己慢慢测试用法,有了收获就得善于总结不是,趁热乎赶紧记下来...
选用功能强大的Select2来实现搜索功能,类似AutoComplete的功能正是我所需要的(官网参见http://select2.github.io/)
但是数据过多,产品表有3W余条数据,不可能全部在前端交由用户筛选,故此搜索框至少要求输入一个字符之后才会显示下拉框
按照输入的字符利用AJAX进行异步查询,然后再将结果交由用户进行选择
页面只要有个简单的INPUT框就可以
前台JS代码如下
究其原因是因为Select2用的是JSONP而不是JSON的格式(区别参见/article/5649177.html)
所以如下这段代码的用处也就不言而喻了~
经试验如果输入汉字传输会变成乱码,所以传输时要进行编码解码,然而编码结束后后台接到参数调用java.net.URLDecoder.decode(productName,"UTF-8");后发现解码并不好使
经测试发现如下语句会进行两次编码,此处深坑!
此时就可以完美支持汉字了
谁知道提测完毕汪又要求加上按产品名称模糊搜索功能(怨念
),后台代码当然是简单又轻松,但是前台的搜索框怎么搞!
学校里主要研习后端但是在公司还要兼做前段,捯饬JS着实头疼啊~
但是又不能不搞,现成代码相当多,但是注释以及方法参数的解释都十分的少,导致像我这么笨的人学起来相当吃力啊
好在有时间乐的自己慢慢测试用法,有了收获就得善于总结不是,趁热乎赶紧记下来...
选用功能强大的Select2来实现搜索功能,类似AutoComplete的功能正是我所需要的(官网参见http://select2.github.io/)
但是数据过多,产品表有3W余条数据,不可能全部在前端交由用户筛选,故此搜索框至少要求输入一个字符之后才会显示下拉框
按照输入的字符利用AJAX进行异步查询,然后再将结果交由用户进行选择
页面只要有个简单的INPUT框就可以
<input style="width: 300px" id="test" />
前台JS代码如下
$('#test').select2({ placeholder: "请输入", minimumInputLength: 1, //最低输入字符数 separator: ",", // 分隔符 maximumSelectionSize: 1, // 限制数量 ajax: { url: '<%=request.getContextPath()%>/stuffConsumptionDetail/queryProductList.mmx', type : "POST", dataType : 'json', quietMillis : 100, data : function(term) { term = escape(encodeURIComponent(term)); return { productName : term }; }, results : function(data) { var myResults = []; $.each(data, function(index, item) { myResults.push({ 'id' : item.pcode, 'text' : item.pname }); }); return { results : myResults }; } } });之前一直出现TypeError: data.results is undefined的错误
究其原因是因为Select2用的是JSONP而不是JSON的格式(区别参见/article/5649177.html)
所以如下这段代码的用处也就不言而喻了~
$.each(data, function(index, item) { myResults.push({ 'id' : item.pcode, 'text' : item.pname }); });同时有一个需要注意的问题就是汉字传输问题
经试验如果输入汉字传输会变成乱码,所以传输时要进行编码解码,然而编码结束后后台接到参数调用java.net.URLDecoder.decode(productName,"UTF-8");后发现解码并不好使
经测试发现如下语句会进行两次编码,此处深坑!
escape(encodeURIComponent(term))所以解码是应进行两次编码
此时就可以完美支持汉字了
相关文章推荐
- [转]将java的console日志写入文件
- js 去掉字符串前后空格
- 浅谈 Linux 内核开发之网络设备驱动
- BZOJ 4269 再见Xor 高斯消元
- javascript中的变量声明原则
- Jquery实现IE6 7 8 兼容placeholder属性
- 自定义jsp标签: TagSupport与BodyTagSupport的区别 (转)
- linux下如何批量修改权限
- *args和**kwargs
- Notepad++ 安装 Zen Coding / Emmet 插件
- Archipelago - SGU 120(计算几何向量旋转)
- c#多线程 Invoke方法的使用
- 如何更专业的使用Chrome开发者工具
- 机器学习中有监督学习——回归
- keepalive 配合mysql主主复制
- 第六章 Vim之管理多个文件
- 第六章 Vim之管理多个文件
- 作业、进程、线程
- Swift2的更改
- JavaScript规范和工具 JSlint