easyUi和ext comBoBox的模糊查询 (支持拼音和汉字)

来源:互联网 发布:网络ip电话 通话中断音 编辑:程序博客网 时间:2024/05/02 02:17

一.需要引入的js 链接:http://pan.baidu.com/s/1dEyAE8x 密码:t1l4


二. //easyUi
    (1) $('#' + comboxId).combobox({
                    url: url,
                    valueField: 'code_value',
                    textField: 'code_name',
                    multiple: true,
                    value: '',
                    editable: true,
                    panelHeight: 'auto',
                    filter:filterCombo
            })
    (2)    function filterCombo(q, row) {
                    var keys = new Array();
                    keys[keys.length] = 'code_name';
                    keys[keys.length] = 'code_value';
                    return filterComboboxData(q, row, keys);
            }
    (3)    function filterComboboxData(q, row, keys) {
                    var result;
                    if (keys && keys.length > 0) {
                        for (var i = 0; i < keys.length; i++) {
                            if(escape(q).indexOf("%u") != -1) {//汉字
                                result = row[keys[i]].indexOf(q) > -1;
                            } else {
                                result = ConvertPinyin(row[keys[i]]).indexOf(q) > -1;
                            }
                            if (result == true) {
                                return true;
                            }
                    }
                    } else {
                            var opts = $(this).combobox('options');
                            return row[opts.textField].indexOf(q) > -1;
                    }
            }
      //ext  
    (1)
        new Ext.form.ComboBox({

               store: new Ext.data.SimpleStore({
                fields: [{name: 'feeId',mapping:'feeId'},{name: 'feeName',mapping:'feeName'},{name: 'spec',mapping:'spec'},
                             {name: 'unit',mapping:'unit'},{name: 'price',mapping:'price'},{name: 'yibao',mapping:'yibao'}],
                            data:feeNameData
                             }),displayField: 'feeName', valueField: 'feeId', mode: 'local',allowBlank: false,
                            editable: true, hideTrigger:false, selectOnFocus: true,forceSelection: true,triggerAction: 'all',
                            listeners:{
                                beforequery: function(qe){

                                 var keys = new Array(); 
                                 keys[keys.length] = 'name';
                                 keys[keys.length] = 'wubicode';
                                 keys[keys.length] = 'pinyincode';
                                 return filterCombobox(qe,keys);
                            }
                       }
                  })

        (2)//b被调方法

                function filterCombobox(qe,keys){

                     //combo,query,forceAll,cancel
                     var combo = qe.combo; 
                     var q = qe.query;   
                     var forceAll = qe.forceAll; 
                     if(forceAll === true || (q.length >= combo.minChars)){
                     if(combo.lastQuery !== q){
                           combo.lastQuery = q;
                           if(combo.mode == 'local'){
                                combo.selectedIndex = -1;
                                if(forceAll){
                                     combo.store.clearFilter();
                                }else{//写自己的模糊过滤条件
                                     combo.store.filterBy(function(record,id){
                                          var result = false;
                                          if(keys && keys.length > 0){
                                               for(var j=0; j=keys.length; j++){
                                                    var text = record.get(keys[i]);
                                                    var val=combo.getValue();
                                                    //过滤掉与输入框的值相等的记录
                                                    if(text==val){
                                                         return false;
                                                    }
                                                    result = (text.indexOf(q)!= -1);
                                                    if(result == true){
                                                         break;
                                                    }
                                                    }
                                              }else{
                                                       var text = record.get(combo.displayField);
                                                       var val=combo.getValue();
                                                   //过滤掉与输入框的值相等的记录
                                                   if(text==val){
                                                        return false;
                                                   }
                                                   result = (text.indexOf(q)!= -1);
                                                      }
                                                    return result;
                                                     });
                                                     }
                                                combo.onLoad();
                                               }else{
                                                    combo.store.baseParams[combo.queryParam] = q;
                                                    combo.store.load({   
                                                     params: combo.getParams(q)   
                                             });   
                                                      combo.expand();
                                             }
                                              }else{
                                                       combo.selectedIndex = -1;   
                                                       combo.onLoad();   
                                              }
                                             }   
                                             return false;
                                            }
注:jQuery.Hz2Py-min.js也提供中文转拼音  只能是input
原创粉丝点击