封装的是一个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. cross validation笔记

    preface:做实验少不了交叉验证,平时常用from sklearn.cross_validation import train_test_split,用train_test_split()函数将数 ...

  2. JVM编译优化

    在部分的商用虚拟机中,Java 程序最初是通过解释器(Interpreter )进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁的时候,就会把这些代码认定为“热点代码”.为了提高热点代码的执 ...

  3. Swift:宏定义

    一.简述 swift中并没有加入宏系统,C语言使用#define定义的基本常量在导入Swift时被Swift编译自动转为Swfit语言的全局变量.但复杂的宏定义不能被Swift转换.Swift中类似宏 ...

  4. 奇怪吸引子---Dadras

    奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...

  5. 7.6 服务远程暴露 - 注册服务到zookeeper

    为了安全:服务启动的ip全部使用10.10.10.10 远程服务的暴露总体步骤: 将ref封装为invoker 将invoker转换为exporter 启动netty 注册服务到zookeeper 订 ...

  6. Triangle leetcode java

    题目: Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjace ...

  7. JQuery效率问题

    1,前言 我们开发了一个专题系统,生成了JSON的数据格式,采用JQuery动态插入HTML中,在前期的使用中,没有太大的问题,效率还可以接受,但是最近可能由于网络加之页面设计问题,我们的JS效率比较 ...

  8. Swift编程语言学习1.7——断言

    断言 可选能够让你推断值是否存在,你能够在代码中优雅地处理值缺失的情况.然而,在某些情况下,假设值缺失或者值并不满足特定的条件,你的代码可能并不须要继续执行.这时.你能够在你的代码中触发一个断言(as ...

  9. SqlServer驱动包 Maven

    SqlServer驱动包 Maven 学习了:https://blog.csdn.net/wu843820873/article/details/50484623 mvn install: mvn i ...

  10. 转: Vim快捷键分类

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