jquery中combobox多选模糊过滤完美版

之前尝试combobox多选的模糊过滤的时候陷入了思维误区,以为jquery自定义了特殊的过滤方法在本身的js中,而filter方法与其冲突。其实combobox的默认过滤也是基于filter实现的,只是默认的时候是以combobox的文本内容过滤。

下面是一个combobox实现多选的完美示例:

var diseaseList = [];
$CommonUI.getComboBox("#diseaseName").combobox({
	valueField:'id',
	textField:'text',
	data:dataSoruce,
	multiple:true,
	required:true,
	editable:true,
	filter:function(q,row){
		var opts = $(this).combobox('options');
		var newTextList = q.split(",");
		var newText = newTextList[newTextList.length-1];
		return row[opts.textField].indexOf(newText) >-1;
	},onSelect:function(row){
		//排除相同选项被多次选择
		for(i in diseaseList){
			if(diseaseList[i] == row.id){
				$("#diseaseName").combobox("setValues",diseaseList);
				$("#diseaseName").combobox("loadData",dataSoruce);
				return;
			}
		}
		diseaseList.push(row.id);
		$("#diseaseName").combobox("setValues",diseaseList);
		$("#diseaseName").combobox("loadData",dataSoruce);
	},onUnselect:function(row){
		for(i in diseaseList){
			if(diseaseList[i] == row.id){
				diseaseList.splice(i,1);
			}
		}
	},onLoadSuccess:function(){
		$("#diseaseName").next().children(":text").attr("placeholder","请用英文逗号分隔选项");
	}
});
//编辑下拉框文本时的操作
$("#diseaseName").next().children(":text").blur(function(){
	var newList = $("#diseaseName").combobox("getText").split(",");
	var newCodeList =[];
	for(i in newList){
		$.ajax({
			type:'post',
			async:false,
			dataType:'json',
			url:$WEB_ROOT_PATH+'/basecode/baseCodeCtrl.htm?BLHMI=findBaseCodeByDiseaseName',
			data:{'dto.baseCode.codeSystem':diseaseCategory,'dto.baseCode.displayName':newList[i]},
			success:function(code){
				if(code != null){
					newCodeList.push(code);
				}
			}
		});
	}
	diseaseList = newCodeList;
	$("#diseaseName").combobox("setValues",diseaseList);
	$("#diseaseName").combobox("loadData",dataSoruce);
});





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值