一个简单的ExtJS搜索建议框
封装的是一个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搜索建议框的更多相关文章
- 一个简单的EXTJS案例
aria-form.js Ext.require([ 'Ext.form.*', 'Ext.layout.container.Column', 'Ext.tab.*' ]); Ext.onReady( ...
- 一个简单的Extjs继承实现
function extend(sub,sup){ //目地:实现只继承父类的原型对象 //1.用一个空函数据中转,目地进行中转 var F = new Function(); //2.实现空函数的的 ...
- 嵌入AppBar并且带搜索建议的搜索框(Android)
先看结果: 相关的官方文档在这里:Creating a Search Interface Android官方提供了两种方式: 弹出一个Dialog,覆盖当前的Activity界面 在AppBar中扩展 ...
- 【百度地图API】如何使用suggestion--下拉列表方式的搜索建议
原文:[百度地图API]如何使用suggestion--下拉列表方式的搜索建议 摘要: 百度地图上有一个很强大的搜索建议功能,以下拉列表的方式展示出来.比如,输入“百度”,下拉列表中就会出现“北京市海 ...
- bootstrap suggest搜索建议插件
近日因工作需要看了下此插件. 首先下载bootstrap js包.添加此插件的引用.注意css样式要引用,不能忘记. 前台页面代码,因为楼主做的是选项卡切换查询不同的结果. <tr> &l ...
- java简单的实现搜索框的下拉显示相关搜索功能
最近做了一个简单的搜索框下面下拉显示相关搜索的功能,有点模仿百度的下拉展示相关搜索 先上个展示图 : 点击进入演示地址,大家可以输入长点的搜索,点击搜索,再输入之前搜索词的前面部分,看是否能展示出来 ...
- 代码录播:jQueryMobile 实现一个简单的弹出框效果
今天给大家带来的是 jQueryMobile 实现一个简单的弹出框效果,有兴趣的童鞋可以试试哦~ ^_^ 阅读原文:www.gbtags.com
- Extjs6(三)——用extjs6.0写一个简单页面
本文基于ext-6.0.0 一.关于border布局 在用ext做项目的过程中,最常用到的一种布局就是border布局,现在要写的这个简单页面也是运用border布局来做.border布局将页面分为五 ...
- solr入门之搜索建议的几种实现方式和最终选取实现思路
上篇博客中我简单的讲了下solr自身的suggest模块来实现搜索建议.但是今天研究了下在solr自身的suggest中添加进去拼音来智能推荐时不时很方便.在次从网上搜集和整理思考了下该问题的解决. ...
随机推荐
- cross validation笔记
preface:做实验少不了交叉验证,平时常用from sklearn.cross_validation import train_test_split,用train_test_split()函数将数 ...
- JVM编译优化
在部分的商用虚拟机中,Java 程序最初是通过解释器(Interpreter )进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁的时候,就会把这些代码认定为“热点代码”.为了提高热点代码的执 ...
- Swift:宏定义
一.简述 swift中并没有加入宏系统,C语言使用#define定义的基本常量在导入Swift时被Swift编译自动转为Swfit语言的全局变量.但复杂的宏定义不能被Swift转换.Swift中类似宏 ...
- 奇怪吸引子---Dadras
奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...
- 7.6 服务远程暴露 - 注册服务到zookeeper
为了安全:服务启动的ip全部使用10.10.10.10 远程服务的暴露总体步骤: 将ref封装为invoker 将invoker转换为exporter 启动netty 注册服务到zookeeper 订 ...
- Triangle leetcode java
题目: Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjace ...
- JQuery效率问题
1,前言 我们开发了一个专题系统,生成了JSON的数据格式,采用JQuery动态插入HTML中,在前期的使用中,没有太大的问题,效率还可以接受,但是最近可能由于网络加之页面设计问题,我们的JS效率比较 ...
- Swift编程语言学习1.7——断言
断言 可选能够让你推断值是否存在,你能够在代码中优雅地处理值缺失的情况.然而,在某些情况下,假设值缺失或者值并不满足特定的条件,你的代码可能并不须要继续执行.这时.你能够在你的代码中触发一个断言(as ...
- SqlServer驱动包 Maven
SqlServer驱动包 Maven 学习了:https://blog.csdn.net/wu843820873/article/details/50484623 mvn install: mvn i ...
- 转: Vim快捷键分类
Vim快捷键分类 http://www.cnblogs.com/jikey/archive/2011/12/28/2304341.html 一. 移动: h,j,k,l: 左,下,上,右. ...