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

좋은 웹페이지 즐겨찾기