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一起交流学习。

时间: 2024-10-12 21:51:41

Extjs3 Combo实现百度搜索查询的相关文章

百度搜索查询命令——组合型

在百度上搜索一下,就会出现一堆关于查询搜索的命令,比如:site,domain,双引号,减号等等.今日,我简单总结一点组合型命令,希望对大家有帮助. 1.domain命令.减号-和的inurl组合 公式:domain:网址 -inurl:网址 含义:搜索引擎搜索你的域名站点除去站点本身链接的外链文章. 提示:这样的组合语句要求,减号前要留一个空格,否则语句无效. 例如:domain:http://www.yujiame.com -inurl:yujiame.com 此处是查询瑜米之伽网站的外链,

jsonp 调用百度搜索查询接口

<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <style> #q {width: 300px; height: 30px; padding: 5px; border:1px solid #f9

百度搜索小脚本

最近在提高自己编程能力,拿一些现实的小脚本练下.该脚本为python语言,主要涉及模块urllib,和正则表达式. 功能:输入要查询的关键字,和查询条数,会返回关键字的百度搜索结果的url和条数,一次最多查50条. import urllib.request import urllib.parse import re while True: x = input("请输入需要搜索的关键字(输入"q!"退出程序):") if x == 'q!': print('bye!

python爬取百度搜索结果ur汇总

写了两篇之后,我觉得关于爬虫,重点还是分析过程 分析些什么呢: 1)首先明确自己要爬取的目标 比如这次我们需要爬取的是使用百度搜索之后所有出来的url结果 2)分析手动进行的获取目标的过程,以便以程序实现 比如百度,我们先进行输入关键词搜索,然后百度反馈给我们搜索结果页,我们再一个个进行点击查询 3)思考程序如何实现,并克服实现中的具体困难 那么我们就先按上面的步骤来,我们首先认识到所搜引擎,提供一个搜索框,让用户进行输入,然后点击执行 我们可以先模拟进行搜索,发现点击搜索之后的完整url中有一

仿百度搜索(AJAX)

<h1>百度搜索</h1><!--建立一个DIV,其中包括一个文本输入框和一个按钮--><div id="sousuo"> <input type="text" id="txt"/><input type="button" id="btn" value="搜索" /> <!--再建一个DIV用于显示关键字查询出

python使用get在百度搜索并保存第一页搜索结果

python使用get在百度搜索并保存第一页搜索结果 作者:vpoet 日期:大约在夏季 注:随意copy,不用在意我的感受 #coding:utf-8 import urllib import urllib2 import re """ 使用GET在百度搜索引擎上查询 此例演示如何生成GET串,并进行请求. """ if __name__=="__main__": url = "http://www.baidu.c

百度搜索小技巧

你会用搜索引擎吗?教你几个简单初级命令,从此搜索更顺手! 首先我要问你三个问题. 第一,你的浏览器首页中有搜索引擎吗? 第二,你在寻找某种想要的信息的时候,会使用搜索引擎吗? 第三,你真的会用搜索引擎吗? 先别急着回答,把这篇文章看完再说. 目前,搜索引擎在我们的生活中已经越来越重要,相信绝大部分人对搜索引擎都有较强的依赖,但是,搜索引擎的应用,绝对不仅仅是输入几个关键词,然后点击搜索那么简单.所以这篇帖子就简单介绍一下百度这个搜索引擎的妙用. 1.双引号 通常,我们在搜索关键词的时候,会以空格

AJAX实现分页--模拟百度搜索分页

第一部分:效果与分析 1.百度分页组件: 2.自己实现的分页: 3.分析: 百度搜索分页,如果总页数大于10,用户最多只能看到10页内容,不足10页显示全部,当点击下一页时,数字页标向前移动一个单位,当点击上一页时向后移动一个单位. 第二部分:后台实现: 1.实现思路: 后台的处理思想是这样的,通过AJAX向后台发送请求,携带一个分页对象PageBean传过去,查询完毕后返回一个新的PageBean对象. 前台传入的PageBean对象参数: 属性 名称 是否必须 默认值 pageSize 每页

人机交互-----百度搜索产品评价

*用户界面: 1功能部件: 首页显示 搜索栏,相关产品登陆设置,各版块的推荐信息等. 搜索界面会有分类搜索,广告推荐. 1.1从用户角度考虑 用户需求: A需要百度相关产品如百度地图->点击进入,B需要搜索问题->在搜索栏输入自己的问题 登陆:选择登陆后不愿意每次操作都登陆 推荐信息推送:不愿意看见不关注的问题 设置:通过"搜索设置,高级设置,首页设置"对产品做不同使用要求 设计人员: 登陆:可选择记住密码 推荐消息推送:根据用户浏览记录分析或者实时热点进行推送,减少浏览记