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