利用easyUI的combobox打造自己主动提示组件
自己主动提示是时下一个非常流行的功能,比方说百度、谷歌的搜索输入框都使用到了这么一个功能。
因为easyUI的combobox设计师已经考虑到了这个功能。所以仅仅需简单几步我们能够轻松打造自己的自己主动提示组件。
自己主动提示有两种模式,一种是本地(local)一种是远程的(remote)。
local的意思也就是说先将全部的数据都载入到client页面,之后不过在这些已载入的数据中去过滤,不会向server发出额外的请求
而remote呢,也就是说事先并不载入全部数据。而是等到用户输入keyword之后,再向server发出请求,返回结果
这两种模式的适用场景也比較明显。local方式比較适用于数据量小的情况,载入全部数据快,且用起来方便,无需再在后台加入搜索方法;
而remote适用于数据量大的情况,由于须要查询的数据往往是特点的某一些,载入出全部数据就显得非常浪费了。所以当有keyword了再去查询,得到的数据量较小,从而得到更快的响应时间。
只是还须要在后台写一个查询数据的方法。
先来演示一下local的方式,分为两步:载入数据、过滤数据
载入数据:
通过设置data或是url,这里推荐通过data,由于这样不须要发起额外的请求。
过滤数据:
首先须要能够编辑,combobox默认的editable就是true,那么无需额外设置。
而且combobox提供了filter方法帮助我们来过滤本地数据
$('#cc').combobox({
filter: function(q, row){
var opts = $(this).combobox('options');
return row[opts.textField].indexOf(q) == 0;
}
});
这里的q就是我们输出的keyword。而row就代表本地数据中的一行数据
熟悉jQuery的朋友应该非常好理解,filter就是过滤出哪些满足測试条件的数据。在这里。測试条件就是row[opts.textField].indexOf(q) == 0,也就是说得到以keywordq开头的数据。
到这里。事实上在功能上已经实现了自己主动提示了。若是您认为组件最右边的选择框下拉箭头不美观。那么能够通过设置hasDownArrow:false将其去掉。
以下给出一个easyUI的local模式的配置供參考:
$('#cc').combobox({
prompt:'输入keyword后自己主动搜索',
required:true,
url:'repairs/getEqiupmentList',
editable:true,
hasDownArrow:false
});
至此local方式就讲完了,以下说一下remote的方式,remote要比local复杂一点,先分析一下
remote这样的方式事实上是没有载入数据这一步的。数据都在数据库里,仅仅须要过滤数据这一步取出我们感兴趣的数据就可以。
因为载入的数据是依据keyword来的。所以必须通过url到server上获取,那么首先须要在server上提供一个这个方案。
相信这个方案应该难不倒大家。仅仅须要获取到client发送的參数拿到数据库中模糊查询一下就能够了。
值得注意的是,在remote方式下:
1、每次打开表单页面的时候,总是会先发起一次请求,当中keyWord为空
2、表单保存之后再改动该表单时,会发一次请求,与1的一样,keyWord为空。这种话。之前填的数据将无法被翻译。仅仅能显示code/id等翻译前的值
针对这两点我说说我的解决方式:
1、combobox提供了一个onBeforeLoad的事件扩展点。是当去server请求数据之前触发的。return false则能够阻止请求的发起。
那么我们能够在这里推断keyWord是否为空,从而控制请求是否发起,问题1迎刃而解!
2、我们须要找到在改动表单时有什么“与众不同”之处,那就是尽管keyWord为空,可是实际上combobox中是有值的。这一点就不同于1中的请求。
那么还是利用onBeforeLoad,当keyWord为空。可是combobox的值不为空时。我们就将id发到server上,从而得到唯一的一个结果。这样性能上也是极好的吧。
以下给出combobox的设置以及后台部分代码:
$('#cc').combobox({
prompt:'输入keyword后自己主动搜索',
required:true,
mode:'remote',
url:'repairs/getEqiupmentList',
editable:true,
hasDownArrow:false,
onBeforeLoad: function(param){
if(param == null || param.q == null || param.q.replace(/ /g, '') == ''){
var value = $(this).combobox('getValue');
if(value){// 改动的时候才会出现q为空而value不为空
param.id = value;
return true;
}
return false;
}
}
});
后台search部分代码:
public void getEqiupmentList(SearchDTO searchDTO,<span> </span>// 这里封装了一个实体SearchDTO(String q。Integer id)
HttpServletResponse response) throws IOException {
Integer id = searchDTO.getId();
String keyWord = searchDTO.getQ();
if (id == null && StringUtils.isBlank(keyWord)) {
return;
}
if (id != null) { // 改动时传入id
List<Equipment> equipmentList = new ArrayList<Equipment>(1);<span> </span>// 这里须要返回一个jsonArray
Equipment equipment = basecodeService.getEquipmentById(id);
equipmentList.add(equipment);
sendJson(response, Utils.parseJson(equipmentList));
return;
} else {
List<Equipment> equipmentList = repairsService
.getEquipmentListBySearch(searchDTO.getQ().toString);
sendJson(response, Utils.parseJson(equipmentList));
}
}
利用easyUI的combobox打造自己主动提示组件的更多相关文章
- combobox自己主动提示组件加入无选中项清空功能
这个标题非常绕口,只是这也是想了半天的成果,对不起体育老师了. 标题想表达的是:之前讲过的用combobox实现自己主动提示组件.只是如今规定该组件不能够保存data中不存在的数据. 最初的想法是通过 ...
- JQuery easyui (4)Tooltip (提示组件) 组件
ps:先来一波美图 Tooltip的加载方式: 1,class加载 <a href="#" title="tooltip">hello word&l ...
- jquery easyUI中combobox的使用总结
jquery easyUI中combobox的使用总结 一.如何让jquery-easyui的combobox像select那样不可编辑?为combobox添加editable属性 设置为false ...
- EasyUI 通过 Combobox 实现 AutoComplete 效果
朋友在做一个web程序,用的EasyUI框架,让我帮忙实现一个自动提示功能.由于之前我也没用过EasyUI框架,就想到了jQueryUI有 AutoComplete 插件,就想直接拿过来用. 但当我将 ...
- easyui的combobox的onChange事件的实现
easyui的combobox的onChange事件的实现,直接上代码: <div style="display:inline;margin-left:15px;"> ...
- easyui的combobox下拉框初始化默认值以及保持该值一直显示的方法
easyui的combobox下拉框默认初始值是空,下面是实现从远程加载数据之后初始化默认值,以及让该值一直排在下拉框的最顶部的方式. 目前的需求是需要在初始化的时候添加"全部数据库&quo ...
- 市委组织部考核项目——利用EasyUi中可编辑的DataGrid控件对多行数据进行编辑并提交
http://blog.csdn.net/cjr15233661143/article/details/19041165 市委组织部考核项目中需要录入原始数据,拿开发区的数据录入举例说明,见下图,需要 ...
- 利用Spring.Net技术打造可切换的分布式缓存读写类
利用Spring.Net技术打造可切换的Memcached分布式缓存读写类 Memcached是一个高性能的分布式内存对象缓存系统,因为工作在内存,读写速率比数据库高的不是一般的多,和Radis一样具 ...
- Android Studio代码自己主动提示无效(not available in Power Save mode)
针对一位博友提的问题,我这边写出来,预计还是非常多人会碰到这个问题,可是不知道怎样解决的. 就是在设置了代码自己主动提示功能后,发现不生效的,怎样设置代码自己主动提示请戳这:Android Studi ...
随机推荐
- 学习笔记5——wp主题开发
我觉得学习wordpress插件开发之前还是得先理解一下wp的主题开发,循序渐进才能学好wordpress开发,话不多说,接下来整理一下这两天学习的wordpress主题开发的一些心得和体会,与大家一 ...
- Xcode的代码块和代码块注释
我们看到的这些
- BZOJ 1821 [JSOI2010]Group 部落划分:MST
Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成 ...
- 算法复习——半平面交(bzoj2618凸多边形)
讲解: 这里套用wuvin神犇的ppt,附上友情链接:http://blog.leanote.com/wuvin 半平面交: 算法流程: 注意事项: 例题: Description 逆时针给出n个凸多 ...
- Nearest Common Ancestors(poj 1330)
题意:给定一棵树,询问两个节点的最近公共祖先. 输入:第一行T,表示测试组数. 每组测试数据包含一个n,表示节点数目,下面n-1行是连接的边,最后一行是询问 输出:共T行,代表每组的测试结果 /* 倍 ...
- 标准C程序设计七---31
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- msp430项目编程50
msp430综合项目---gsm无线采集传输平台系统50 1.电路工作原理 2.代码(显示部分) 3.代码(功能实现) 4.项目总结
- msp430项目编程46
msp430综合项目---监控系统46 1.电路工作原理 2.代码(显示部分) 3.代码(功能实现) 4.项目总结
- msp430项目编程43
msp430综合项目---蓝牙控制直流电机调速系统43 1.电路工作原理 2.代码(显示部分) 3.代码(功能实现) 4.项目总结
- JS基础之BOM对象
BOM 对象 JavaScript分为 ECMAScript,DOM,BOM. BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作.使用 BOM,开发者可以移动窗口.改变状态栏中的文本以及执行其 ...