一个简单的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中添加进去拼音来智能推荐时不时很方便.在次从网上搜集和整理思考了下该问题的解决. ...
随机推荐
- 各个JAVA场景下的内存图
首先,内存模型图,如下: 其次,一句话概括各个区域的作用: 1:程序计数器(Program Counter Register),让虚拟机中的字节码解释器通过改变计数器的值来获取下一条代码指令,比如分支 ...
- MySQL 锁模式
InnoDB implements standard row-level locking where there are two types of locks, shared (S) locks an ...
- intellij idea 如何一键清除所有断点
原文地址: https://blog.csdn.net/yanziit/article/details/73459795 我之前写了一个百度经验,但是搜不到,现在复制一遍,自己留个记录. 注:此方法适 ...
- Error:(13, 60) java: 程序包com.sun.tools.internal.xjc.reader.xmlschema.bindinfo不存在
我在import maven项目时,pom.xml报错Missing artifact com.sun:tools:jar:1.5.0,经过盘查发现是pom引入的struts2相关jar包导致报错. ...
- Spring(AbstractRoutingDataSource)实现动态数据源切换
转自: http://blog.51cto.com/linhongyu/1615895 一.前言 近期一项目A需实现数据同步到另一项目B数据库中,在不改变B项目的情况下,只好选择项目A中切换数据源,直 ...
- c++ 如何编写接口类(interface)
接口类简介: 接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法. 用c++实现接口类时需要 ...
- 一种模块化开发的目录结构和部署tips
开发环境 开发态目录结构类似: 然后用express的static,将上下文映射到static那级目录上,比如访问: http://ip:5000/employee/employeeList.html ...
- go语言之进阶篇拷贝文件案例
1.文件案例:拷贝文件 示例: package main import ( "fmt" "io" "os" ) func main() { ...
- 解决ASP.NET页面回车回发的问题
在asp.net页面中在文本框.按钮等服务器控件上回车都会导致页面回发,网上很多解决方案是使用JS来进行event.keyCode==13判断是否按下的回车键,如果是就event.returnValu ...
- capwap学习笔记——capwap的前世今生(转)
公司要做AP和AC,从今天开始学习capwap. 1 capwap的前世今生 1.1 胖AP.瘦AP.AC 传统的WLAN网络都是为企业或家庭内少量移动用户的接入而组建的.因此,只需要一个无线路由器就 ...