自己主动提示是时下一个非常流行的功能,比方说百度、谷歌的搜索输入框都使用到了这么一个功能。

因为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打造自己主动提示组件的更多相关文章

  1. combobox自己主动提示组件加入无选中项清空功能

    这个标题非常绕口,只是这也是想了半天的成果,对不起体育老师了. 标题想表达的是:之前讲过的用combobox实现自己主动提示组件.只是如今规定该组件不能够保存data中不存在的数据. 最初的想法是通过 ...

  2. JQuery easyui (4)Tooltip (提示组件) 组件

    ps:先来一波美图 Tooltip的加载方式: 1,class加载 <a href="#" title="tooltip">hello word&l ...

  3. jquery easyUI中combobox的使用总结

    jquery easyUI中combobox的使用总结 一.如何让jquery-easyui的combobox像select那样不可编辑?为combobox添加editable属性 设置为false ...

  4. EasyUI 通过 Combobox 实现 AutoComplete 效果

    朋友在做一个web程序,用的EasyUI框架,让我帮忙实现一个自动提示功能.由于之前我也没用过EasyUI框架,就想到了jQueryUI有 AutoComplete 插件,就想直接拿过来用. 但当我将 ...

  5. easyui的combobox的onChange事件的实现

    easyui的combobox的onChange事件的实现,直接上代码: <div style="display:inline;margin-left:15px;"> ...

  6. easyui的combobox下拉框初始化默认值以及保持该值一直显示的方法

    easyui的combobox下拉框默认初始值是空,下面是实现从远程加载数据之后初始化默认值,以及让该值一直排在下拉框的最顶部的方式. 目前的需求是需要在初始化的时候添加"全部数据库&quo ...

  7. 市委组织部考核项目——利用EasyUi中可编辑的DataGrid控件对多行数据进行编辑并提交

    http://blog.csdn.net/cjr15233661143/article/details/19041165 市委组织部考核项目中需要录入原始数据,拿开发区的数据录入举例说明,见下图,需要 ...

  8. 利用Spring.Net技术打造可切换的分布式缓存读写类

    利用Spring.Net技术打造可切换的Memcached分布式缓存读写类 Memcached是一个高性能的分布式内存对象缓存系统,因为工作在内存,读写速率比数据库高的不是一般的多,和Radis一样具 ...

  9. Android Studio代码自己主动提示无效(not available in Power Save mode)

    针对一位博友提的问题,我这边写出来,预计还是非常多人会碰到这个问题,可是不知道怎样解决的. 就是在设置了代码自己主动提示功能后,发现不生效的,怎样设置代码自己主动提示请戳这:Android Studi ...

随机推荐

  1. Leetcode 406.根据身高重建队列

    根据身高重建队列 假设有打乱顺序的一群人站成一个队列. 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数. 编写一个算法来重建这个队列. 注意:总人 ...

  2. main()中的参数argc, argv

    转自:http://blog.csdn.net/eastmount/article/details/20413773 一.main()函数参数 通常我们在写主函数时都是void main()或int ...

  3. 【bzoj3231】[Sdoi2008]递归数列 矩阵乘法+快速幂

    题目描述 一个由自然数组成的数列按下式定义: 对于i <= k:ai = bi 对于i > k: ai = c1ai-1 + c2ai-2 + ... + ckai-k 其中bj和 cj  ...

  4. TeraTerm下载

    参考:http://blog.csdn.net/gxp/article/details/9169319 官方主页: http://ttssh2.sourceforge.jp/ 官方下载: http:/ ...

  5. servlet对form提交的数据进行XML转换后发送

    今天遇到一个项目,要求对form表单提交的数据进行以xml格式发送出去: 直接写XMLUtil工具类如下: package com.yfit.controller; import javax.serv ...

  6. 在 Linux 实例上自动安装并运行 VNC Server

    原文网址:https://help.aliyun.com/knowledge_detail/41181.html?spm=5176.8208715.110.11.4c184ae8mlC7Yy 您可以使 ...

  7. 使用Jackson在Java中处理JSON

    在工作中实际使用到Java处理JSON的情况,且有很大部分都使用的是开源工具Jackson实现的. 一.入门 Jackson中有个ObjectMapper类很是实用,用于Java对象与JSON的互换. ...

  8. oracle查询当前用户名下所有表

    select * from all_tables where owner='TEST': TEST为用户名,用户名必须是大写. 查看当前登录的用户的表: select table_name from ...

  9. msp430项目编程47

    msp430综合项目---有线采集传输平台系统47 1.电路工作原理 2.代码(显示部分) 3.代码(功能实现) 4.项目总结

  10. codevs——T1860 最大数||洛谷——P1107 最大整数

    http://codevs.cn/problem/1860/ || https://www.luogu.org/problem/show?pid=1107#sub 题目描述 Description 设 ...