封装的是一个Ext4.2的组件,继承并兼容于Ext的ComboBox.

实现原理非常easy,在 combo 中监听 keyup 事件就可以.

    搜索建议的Combo.基本上全然兼容, 使用方式与Combo下拉框一样.
须要后台程序依据keyword进行搜索建议.

源代码例如以下:

// 搜索建议框,使用时请适当改动包名
Ext.define("CNC.view.SearchComboBox",{
extend: "Ext.form.field.ComboBox",
alias : ["widget.searchCombo", "widget.searchComboBox", ],
editable: true,
enableKeyEvents : true,
searchWordKey : "keyword", // 搜索的属性名称
searchSizeKey : "searchSize", // 传递数量的KEY
searchSize : 5, // 返回的数量
initComponent : function() {
//
var keyup = "keyup";
this.addListener(keyup, this.keyupFn, this)
this.callParent();
}
, keyupFn : function(combo, e){
//
var store = this.getStore && this.getStore();
if(!store){ return; }
//
var proxy = store.getProxy();
if(!proxy){ return; }
// 获取输入的文本内容
var text = this.getRawValue() || "";
// 设置到參数里面
var extraParams = proxy.extraParams || {};
proxy.extraParams = extraParams;
//
var searchWordKey = this.searchWordKey;
var searchSizeKey = this.searchSizeKey;
var searchSize = this.searchSize || 5;
// 设置到參数里面
extraParams[searchWordKey] = text;
extraParams[searchSizeKey] = searchSize; // 使用 store 载入
store.load();
} });

组件使用配置:

    {
xtype: 'searchCombo',
fieldLabel: 'XXXX属性',
name: 'xxxxName',
editable: true,
displayField: 'xxxName',
valueField: 'xxxID'
searchWordKey : "keyword", // 搜索的属性名称
searchSizeKey : "searchSize", // 传递数量的KEY
searchSize : 5, // 返回的数量
store: Ext.create('XXX.xxx.xxxStore', {
proxy : {
type: 'ajax',
api : {
read : 'xxx/xxx/listBy.json'
},
actionMethods: {
read : 'POST'
},
reader: {
type: 'json',
root:'data',
totalProperty: 'totalCount',
messageProperty:'message'
},
extraParams: {
xxxname : 'xxxvalue'
}
}
})
}

Contoller 使用方式, 相似以下这样:

 var acType = "";
var acTypeName = "";
var acTypeCombo = XXXForm.query('searchCombo[name=acType]')[0];
if(acTypeCombo){
acType = acTypeCombo.getValue();
acTypeName = acTypeCombo.getRawValue();
}

假设要监听事件,应该监听 select 事件:

 select(combo, records, eOpts )

欢迎留言。

说明: 仅仅支持远程载入的Store。

当然,也能够进行定制。如监听多个事件:

    initComponent : function() {
//
var keyup = "keypress";
var change = "change";
var active = "active";
this.addListener(keyup, this.keyupFn, this)
this.addListener(change, this.keyupFn, this)
this.addListener(active, this.keyupFn, this)
this.callParent();
}

还能够对反复的文本进行拦截,避免过多请求:

        // 获取输入的文本内容
var text = this.getRawValue() || "";
text = text.trim();//.replace(/\w/g, "");
if(text == this.prevKeyWord){
return;
}
//
this.prevKeyWord = text;

上面代码中凝视掉的部分, 是用正則表達式将数字字母给清理掉,有些中文输入法会有这样的问题。
此外,你还能够使用延迟函数,比方500毫秒之内仅仅触发一次。有些时候会非常实用的,这就须要你自己来实现啦。

一个简单的ExtJS搜索建议框的更多相关文章

  1. 一个简单的EXTJS案例

    aria-form.js Ext.require([ 'Ext.form.*', 'Ext.layout.container.Column', 'Ext.tab.*' ]); Ext.onReady( ...

  2. 一个简单的Extjs继承实现

    function extend(sub,sup){ //目地:实现只继承父类的原型对象 //1.用一个空函数据中转,目地进行中转 var F = new Function(); //2.实现空函数的的 ...

  3. 嵌入AppBar并且带搜索建议的搜索框(Android)

    先看结果: 相关的官方文档在这里:Creating a Search Interface Android官方提供了两种方式: 弹出一个Dialog,覆盖当前的Activity界面 在AppBar中扩展 ...

  4. 【百度地图API】如何使用suggestion--下拉列表方式的搜索建议

    原文:[百度地图API]如何使用suggestion--下拉列表方式的搜索建议 摘要: 百度地图上有一个很强大的搜索建议功能,以下拉列表的方式展示出来.比如,输入“百度”,下拉列表中就会出现“北京市海 ...

  5. bootstrap suggest搜索建议插件

    近日因工作需要看了下此插件. 首先下载bootstrap js包.添加此插件的引用.注意css样式要引用,不能忘记. 前台页面代码,因为楼主做的是选项卡切换查询不同的结果. <tr> &l ...

  6. java简单的实现搜索框的下拉显示相关搜索功能

    最近做了一个简单的搜索框下面下拉显示相关搜索的功能,有点模仿百度的下拉展示相关搜索 先上个展示图 : 点击进入演示地址,大家可以输入长点的搜索,点击搜索,再输入之前搜索词的前面部分,看是否能展示出来 ...

  7. 代码录播:jQueryMobile 实现一个简单的弹出框效果

    今天给大家带来的是 jQueryMobile 实现一个简单的弹出框效果,有兴趣的童鞋可以试试哦~ ^_^ 阅读原文:www.gbtags.com  

  8. Extjs6(三)——用extjs6.0写一个简单页面

    本文基于ext-6.0.0 一.关于border布局 在用ext做项目的过程中,最常用到的一种布局就是border布局,现在要写的这个简单页面也是运用border布局来做.border布局将页面分为五 ...

  9. solr入门之搜索建议的几种实现方式和最终选取实现思路

    上篇博客中我简单的讲了下solr自身的suggest模块来实现搜索建议.但是今天研究了下在solr自身的suggest中添加进去拼音来智能推荐时不时很方便.在次从网上搜集和整理思考了下该问题的解决. ...

随机推荐

  1. 在自己建立的Thread中设置Handler,并接收消息

    这里主要讲的是Android中线程的概念,自己的线程不能更新UI线程中的视图.如果把Handler设置在自己的线程中,那么必须建立一个Looper.至于为什么在Activity中建立Handler就不 ...

  2. Java工程师成神之路~(2018修订版)

    针对本文,博主最近在写<成神之路系列文章> ,分章分节介绍所有知识点.欢迎关注. 主要版本 更新时间 备注 v1.0 2015-08-01 首次发布 v1.1 2018-03-12 增加新 ...

  3. sublime3 安装 Package Control 报错 “There Are No Packages Available For Installation”

    编辑Preferences > Package Settings > Package Control > Settings - User文件 码上 { "channels& ...

  4. Hash dump神器 (转)

    在Win7 x64位下无压力测试通过. 0 / INTRO========= Quarks PwDump 是一个Win32环境下的系统授权信息导出工具,目前除此之外没有任何一款工具可以导出如此全面的信 ...

  5. OC-字符串中大小写字母转换

    一般语言中的大小写转换都会提供的有默认的函数,不过闲来无事,简单的模仿实现了一下: 系统中默认的大小写转换: NSString *name=@"博客园-FlyElephant"; ...

  6. CentOS下ssh sftp配置及权限设置

    运营有异地传输文件的需求,但如果通过QQ等即时通讯软件,不利于文件的集中管理,不方便.而我们办公室的内网机器无法提供外网访问方法,且传输的内容不合适放到公共的网盘或者是云存储上,所以只能用线上负载较低 ...

  7. tf.concat, tf.stack和tf.unstack的用法

    tf.concat, tf.stack和tf.unstack的用法 tf.concat相当于numpy中的np.concatenate函数,用于将两个张量在某一个维度(axis)合并起来,例如: a ...

  8. win7下使用Taste实现协同过滤算法

    如果要实现Taste算法,必备的条件是: 1) JDK,使用1.6版本.需要说明一下,因为要基于Eclipse构建,所以在设置path的值之前要先定义JAVA_HOME变量. 2) Maven,使用2 ...

  9. 转: Vim快捷键分类

    Vim快捷键分类 http://www.cnblogs.com/jikey/archive/2011/12/28/2304341.html  一. 移动:    h,j,k,l: 左,下,上,右.   ...

  10. Android 关于 ActionBarSherlock 的使用

    原文地址 本文内容 使用 主题化 ActionBarSherlock 演示项目 本文 ActionBarSherlock 简单演示 最近一个星期被 actionsherlock 搞得很不爽(光去足疗店 ...