combobox的多选模糊过滤

     在项目中遇到需求,需要combobox在多选时实现模糊过滤,即是说你输入内容时,combobox自动过滤包含输入值的选项供你选择。

    jquery的combobox在单选的时候具有自动过滤功能,但是当设置了multiple:true时,combobox的第一个值可以模糊查询,第二个值则不行了。原因是combobox默认是将输入框的整个值拿去模糊匹配,故而多选时不能模糊过滤。

   对此我想了一个折中的办法。当输入文字时清空combobox的文本,这样每次输入就只会匹配输入的内容了,在选中一行的时候将其放入一个数组,设置下拉框的值为该数组并重新加载下拉框数据,使之能显示所有选项。

具体代码如下:

onSelect:function(row){
	if(diseaseList.length==0){
		diseaseList.push(row.id);
		$("#diseaseName").combobox("setValues",diseaseList);
		$("#diseaseName").combobox("loadData",dataSoruce);
		diseaseText = $("#diseaseName").combobox("getText");
	}else{
		for(i in diseaseList){
			if(diseaseList[i] == row.id){
				$("#diseaseName").combobox("setValues",diseaseList);
				$("#diseaseName").combobox("loadData",dataSoruce);
				diseaseText = $("#diseaseName").combobox("getText");
				return;
			}
		}
		diseaseList.push(row.id);
		$("#diseaseName").combobox("setValues",diseaseList);
		$("#diseaseName").combobox("loadData",dataSoruce);
		diseaseText = $("#diseaseName").combobox("getText");
	}
},onUnselect:function(row){
	for(i in diseaseList){
		if(diseaseList[i] == row.id){
			diseaseList.splice(i,1);
			diseaseText = $("#diseaseName").combobox("getText");
		}
	}
}
});

$("#diseaseName").next().children(":text").focus(function(){
	$("#diseaseName").combobox("setText","");
});
$("#diseaseName").next().children(":text").blur(function(){
	$("#diseaseName").combobox("setText",diseaseText);
});

注意:对于combobox进行onfocus事件和onblur事件的绑定并不是直接作用在下拉框对象上,而是
$("#diseaseName").next().children(":text")对象

在C#中,ComboBox默认是单选的,但是你可以通过扩展ComboBox类来实现多选功能。引用\[1\]提供了一个示例代码,可以参考其中的实现方式。 首先,你需要修改控件声明,将ComboBox类型改为自定义的ComboBoxMutiSelect类型。引用\[2\]中给出了修改的代码。 接下来,你需要添加一个事件处理方法来处理CheckedListBox的选项改变事件。在该方法中,你可以根据需要进行多选功能的实现。引用\[3\]中给出了一个示例的事件处理方法的代码。 在该事件处理方法中,首先判断ComboBox是否需要多选,如果需要,则开始绘制CheckedListBox。然后,设置CheckedListBox的位置和大小,并将其添加到父控件中。最后,停止绘制。 通过以上步骤,你可以实现在ComboBox中实现多选功能。 #### 引用[.reference_title] - *1* [C#中comboBox下拉框中实现多选](https://blog.csdn.net/babyqian84/article/details/8978275)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [C# WinForm 实现CombBox 控件多选](https://blog.csdn.net/u014626607/article/details/120240030)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值