Extjs3 Combo实现百度搜索查询
在Extjs中实现Combo手输模糊筛选出下拉框数据。之前一直利用的Combo的keyup来实时的请求数据库进行查询。最近发现了一个更好的方式:只需要引用一个ComboBoxQuery
Ext.ns('Ext.plugins.ComboBoxQuery');
Ext.plugins.ComboBoxQuery = function (config) {
Ext.apply(this, config);
};
Ext.extend(Ext.plugins.ComboBoxQuery, Ext.util.Observable, {
minChars: 1,
init: function (combo) {
this.combo = combo;
this.combo.on('beforequery',function(qe){
var cmb = qe.combo;
var q = qe.query;
var forceAll = qe.forceAll;
if (forceAll === true || (forceAll == undefined && cmb.mode == 'remote') || (q.length >= this.minChars)) {
if (cmb.lastQuery !== q) {
cmb.lastQuery = q;
if (cmb.mode == 'local') {
cmb.selectedIndex = -1;
if (forceAll||q==="") {
cmb.store.clearFilter();
} else {
// 检索的正则
var regExp = new RegExp(".*" + q + ".*", "i");
// 执行检索
cmb.store.filterBy(function(record, id) {
// 得到每个record的项目名称值
var text = record.get(combo.displayField);
return regExp.test(text);
});
}
cmb.onLoad();
} else if (cmb.forceQueryInLocal){
if(cmb.store.getCount()>0){
this.isRemoteStoreLoaded = true;
} else if(!this.isRemoteStoreLoaded){
cmb.store.load();
this.isRemoteStoreLoaded = true;
}
cmb.selectedIndex = -1;
if(q==="")
cmb.store.clearFilter();
else{
var regExp = new RegExp(".*" + q + ".*", "i");
// 执行检索
cmb.store.filterBy(function(record, id) {
// 得到每个record的项目名称值
var text = record.get(combo.displayField);
return regExp.test(text);
});
}
cmb.expand();
cmb.restrictHeight();
} else {
cmb.store.baseParams[this.queryParam] = q;
cmb.store.load({
params: cmb.getParams(q)
});
cmb.expand();
cmb.restrictHeight();
}
} else {
cmb.selectedIndex = -1;
cmb.onLoad();
}
}
return false;
});
//解决当combobox的store提前加载后,再点击输入框不能自动弹出下拉框的问题
this.combo.on('focus', function(cmb){
if(!cmb.list){
cmb.initList();
}
if(!cmb.isExpanded()) {
cmb.expand();
cmb.restrictHeight();
}
});
}
});
然后在Combo中加入
var Store = new Ext.data.JsonStore({
url: 'xxxx',
method: 'Post',
root: 'Table',
autoLoad: true,
fields: ['Id', 'Name']
});
xtype: 'combo',
editable: false,
mode: 'local',
displayField: 'Name',
valueField: 'Id',
triggerAction: 'all',
store: Store,
editable: true,
plugins: [new Ext.plugins.ComboBoxQuery()],
forceSelection: true,
width: 250,
fieldLabel: '测试'
主要是 plugins: [new Ext.plugins.ComboBoxQuery()],
forceSelection: true, 这两句代码。
plugins引用插件,
forceSelection:true输入只能是combo的数据源里存在的数据。
以上版本只在Extjs3的测试使用。
欢迎Extjs使用者加入QQ群:460607949一起交流学习。
Extjs3 Combo实现百度搜索查询的更多相关文章
- selenium 之百度搜索,结果列表翻页查询
selenium之百度搜索,结果列表翻页查询 by:授客 QQ:1033553122 实例:百度搜索,结果列表翻页查询 解决问题:解决selenium driver获取web页面元素时,元素过期问题 ...
- Springboot+Vue实现仿百度搜索自动提示框匹配查询功能
案例功能效果图 前端初始页面 输入搜索信息页面 点击查询结果页面 环境介绍 前端:vue 后端:springboot jdk:1.8及以上 数据库:mysql 核心代码介绍 TypeCtrler .j ...
- Arcgis for Javascript API下类似于百度搜索A、B、C、D marker的实现方式
原文:Arcgis for Javascript API下类似于百度搜索A.B.C.D marker的实现方式 多说无益,首先贴两张图让大家看看具体的效果: 图1.百度地图搜索结果 图2.Arcgis ...
- 仿百度搜索(AJAX)
<h1>百度搜索</h1><!--建立一个DIV,其中包括一个文本输入框和一个按钮--><div id="sousuo"> < ...
- 百度搜索URL参数 搜索关键字
http://www.baidu.com/s?wd=关键字 wd(Keyword):查询的关键词: http://www.baidu.com/s?wd=关键字&cl=3 cl(Class):搜 ...
- python使用get在百度搜索并保存第一页搜索结果
python使用get在百度搜索并保存第一页搜索结果 作者:vpoet mail:vpoet_sir@163.com 注:随意copy,不用在意我的感受 #coding:utf-8 import ur ...
- Ajax以及类似百度搜索框的demo
public class Ajax01 extends HttpServlet{ @Override protected void service(HttpServletRequest request ...
- python爬取百度搜索结果ur汇总
写了两篇之后,我觉得关于爬虫,重点还是分析过程 分析些什么呢: 1)首先明确自己要爬取的目标 比如这次我们需要爬取的是使用百度搜索之后所有出来的url结果 2)分析手动进行的获取目标的过程,以便以程序 ...
- 百度api查询多个地址的经纬度的问题
在使用百度api查询多个地址的经纬度的时候,由于百度api提供的经纬度查询方法是回调函数,并且后续操作必须等经纬度获取完成才能进行,问题就存在于怎么判断所有地点是否都回调完成了,问了之前的一个前端大佬 ...
随机推荐
- 包含到cocos2d-x里的tcpsocket源码
声明:本文参考了langresser发布的blog“跨平台的游戏客户端Socket封装” Socket处理是异步非阻塞的,所以可以放心的放到主线程处理消息,并且在原作者的基本上进行了系列优化,考虑了客 ...
- RDMA编程实例
1,RDMA verbs Multicast Code for Multicast Using RDMA_CM(Remote directory memory access_connect manag ...
- light oj 1138
Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Submit Status Pract ...
- [iOS基础控件 - 4.5] 猜图游戏
A.需要掌握的 1.添加图片资源(暂时认为@2x跟非@2x代表同一张图片) 2.搭建UI界面* 文本标签* 4个按钮* 中间的图片 3.设置状态栏样式 4.监听下一题按钮的点击 5.延迟加载数据* 加 ...
- unable to load default svn client myeclipse SVN安装,wen7 64位安装SVN
在安装完后连接svn时出现unable to load default svn client的错误提示,百度知道是版本不对,我安装的是1.8的版本,插件按成1.6的了,只需下载1.8插件安装就行了 安 ...
- iOS多线程拾贝------操作巨人编程
iOS多线程拾贝------操作巨人编程 多线程 基本 实现方案:pthread - NSThread - GCD - NSOperation Pthread 多平台,可移植 c语言,要程序员管理生命 ...
- SAP ABAP 处理字符串串串串串串串串(详细)
关于ABAP中处理字符串的方法,非常详细,学习过程中总结一下分享给大家,,, ABAP/4 提供多个处理类型 C 即字符串 的数据对象的关键字. 处理字符串 的方法有: 1.拆分字符串split 2. ...
- HBase 和 MongoDB在设计上的区别
转载:http://leongfans.iteye.com/blog/1019383 昨天搜一下mongodb的资料,介绍应用的比较多,原理介绍的不多. 粗略得看了一下,总体来说两者的设计思路差不多, ...
- 利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- 通过IP控制登录系统
项目中有这么一个需求,就是系统仅仅能在指定ip下登录,能够理解为内部系统,仅仅能够在公司訪问 我的代码是这样写的:入不入流不知道,但能解决这个问题. 获得訪问IP代码: String ip = req ...