combobox下拉框多字段模糊过滤

10 篇文章 0 订阅

 

1.easyui

/**
 * 下拉框过滤
 * @param q
 * @param row
 * @param keys Array型
 * @return
 */
function filterComboboxData(q, row, keys){
 if(keys && keys.length > 0){
  for(var i=0;i<keys.length;i++){
   var result = row[keys[i]].toLowerCase().indexOf(q) > -1;
   if(result == true){
    return true;
   }
  }
 }else{
  var opts = $(this).combobox('options');
  return row[opts.textField].toLowerCase().indexOf(q) > -1;
 }
}

 

调用:

<select class="easyui-combobox textbox" id="diagnose2" name="diagnose2" data-options="required:true,valueField:'hcdid',textField:'name',url:'app/menzhen/listAllDiagnosis.do',filter: filterCombo"></select>


function filterCombo(q, row){
 var keys = new Array();
 keys[keys.length] = 'name';
 keys[keys.length] = 'wubicode';
 keys[keys.length] = 'pinyincode';
 return filterComboboxData(q, row, keys);
}

 

 

2.ext


/**
 * ext filterCombobox输入过滤
 * @param qe
 * @param keys Array型
 * @return
 */
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;
}

调用:

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);
        }
        
       }
      })

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值