让Combox的自动完成支持模糊查询

 

EXTJS提供的COMBOX有一个自动完成的功能 ,就是你只要输入头几个字,那么以这几个字开头的所有列表项都会显示出来供你选。但是有一个缺陷,就是COMBOX只会按照头几个字严格去匹配, 而如果想模糊查询,就不行了。

比如,我有一个保存了所有客户公司名称的COMBOX,我记不得某个公司的全名,但我知道这个公司大概叫“百邦”,那么我只要在COMBOX中输入“百邦”,即可查出所有包含“百邦”的公司。实现代码如下。

 

//combox用到的store

comboxVendorStore=new Ext.data.JsonStore({

url:'/pcms/dictionary/vendor.do?method=find',

root:'Datas',

totalProperty: 'TotalRecords',

fields:[

{name:'vendorId', mapping:'vendorId'},

{name:'shortName', mapping:'shortName'}

]

});

 

 

var PagevendorCombox=new Ext.form.ComboBox({

name:'vendorId',

       fieldLabel:'供货单位',

         store: comboxVendorStore,

       displayField:'shortName',

         valueField:'vendorId',

         emptyText:'请选择',

         width:160,

         listWidth:400,

         minHeight:100,

         editable:true,

         allowBlank:false,

         mode:'local', 

         loadingText:'loading...',

         hiddenName:'vendorId',

         selectOnFocus: true,

         triggerAction:'all',

enableKeyEvents:true,

         listeners:{

         keypress:function(t,e){

//这里判断空格,即输入“百邦”后,敲击空格键才进行查询,防止无条件的查询拖累服务器。

         if(e.getKey()==e.SPACE){

         comboxVendorStore.load({params:{query:PagevendorCombox.getEl().getValue(),start:0,limit:100000}});//这里取Combox内容的方法需要注意,是用HTML元素的方式去取。取后通过query传递给后台,这个query参数里放的就是“百邦”两字,后台根据此进行模糊查询并返回相应的结果。

         }

         }

         }

});

comboxVendorStore.load({params:{start:0,limit:100000}});

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值