ExtJs-ComboBox按拼音首字母进行过滤

1、引用 chinesePY.js 文件,下载地址 http://download.csdn.net/detail/gj_diy/8988705

注:这个js编码有点问题,自己改成 utf-8 的,不然汉字无法获取首字母

2、在下拉数据来源中添加一个 key,value为 Pinyin.GetJP(str) 

	listeners : {// 这是Store的监听,给数据添加转换好的简拼
	 
		load : function(pStore, option) {// 加载时将每一项record的text翻译为简拼
	 
			pStore.each(function(record) {
	 
				var text = record.get('text');
	 
				var code = Pinyin.GetJP(text);// 获取汉语,调用函数得到对应的简拼
	 
				record.set('code', code);
	 
			})
	 
		}
	 
	}

3、给下拉框添加监听事件

	this.comboType = new Ext.form.ComboBox({
		name : 'comboType',
		hiddenName : 'comboType',
		fieldLabel : '扫描类型',
		store : _this.typeStore,
		mode : 'local',
		valueField : "value",
		displayField : "name",
		forceSelection : true,
		typeAhead : true,// 这个属性也是模糊检索,不过是要输入汉字
		forceSelection : true,
		triggerAction : 'all',
		allowBlank : false,
		blankText : '扫描类型不能为空',
		width : 120,
		listeners : {
			focus: {//这个是将焦点放到这个下拉框,如果没有这个,你需要手动点击下下拉框,再输入才能实现这个效果
	            fn: function (e) {  
	                e.expand();  
	                this.doQuery(this.allQuery, true);  
	            },  
	            buffer: 200  
	        },
			'beforequery':function(e){
				var combo = e.combo;
				if (!e.forceAll) {
					var input = e.query;
					var regExp = new RegExp("^" + input + ".*", "i"); 
					combo.store.filterBy(function(record, id) {
						var text = record.get('code');
						return regExp.test(text);
					});
					combo.expand();
					combo.select(0, true);// 将光标默认指向下拉列表的第一项,这样在取到合适的选项时,通过上下方向键和回车就可以选中需要的结果
					return false;
				}
            },
		}
	});

执行效果:

                                         

转载于:https://my.oschina.net/chipsy/blog/709730

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值