利用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 ...
随机推荐
- OSPF 提升 一 ----基础
ospf ccnp内容 一 link-state protocols IGP 开放式的最短路径优先协议 公有协议 支持中到大型的网络 spf算法 链路状态协议 1. ...
- hdu 1536 sg (dfs实现)
S-Nim Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- 九度oj 题目1283:第一个只出现一次的字符
题目描述: 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符. 输入: 输入有多组数据 每一组输入一个字符串. 输出: 输出第一个只出现一次的 ...
- iOS学习笔记05-触摸事件
一.事件分发处理[由外到内] 在iOS中发生触摸后,事件会加到UIApplication事件队列,UIApplication会从事件队列取出最前面的事件进行分发处理,通常会先分发给主窗口,主窗口会调用 ...
- 用docker弹性部署自己的服务
很久不看docker的东西了,之前了解的一些基本命令都忘得差不多了,适逢工作需要,再来复习巩固下.今天想完成的是:借助docker不部署下自己的服务. 环境准备 都说“巧妇难为无米之炊”,所以还是需要 ...
- angular中关于自定义指令——repeat渲染完成后执行动作
业务中有时需要在异步获取数据并用ng-repeat遍历渲染完页面后执行某个操作,angular本身并没有提供监听ng-repeat渲染完成的指令,所以需要自己动手写.有经验的同学都应该知道,在ng-r ...
- Codeforces Round #288 (Div. 2) E. Arthur and Brackets [dp 贪心]
E. Arthur and Brackets time limit per test 2 seconds memory limit per test 128 megabytes input stand ...
- C++ 中new
operator new在C++中的各种写法 (2011-09-21 14:59:33) 标签: 杂谈 乍一看,在C++中动态分配内存很简单:new是分配,delete是释放,就这么简单.然而,这 ...
- ftrace简介
ftrace 的作用是帮助开发人员了解 Linux 内核的运行时行为,以便进行故障调试或性能分析. 最早 ftrace 是一个 function tracer,仅能够记录内核的函数调用流程.如今 ft ...
- Louvain algorithm for community detection
主要理解Louvain 算法中对于模块度的定义:模块度是评估一个社区网络划分好坏的度量方法,它的物理含义是社区内节点的连边数与随机情况下的边数只差,它的取值范围是 [−1/2,1).可以简单地理解为社 ...