easyui combobox 디 스 플레이 값 선별 loadFilter 방법

3279 단어 JSP
작업 이 필요 하기 때문에 combobox 를 만들어 서 불 러 온 값 의 일부분 을 선별 해 야 합 니 다.
url 에서 표시 할 내용 을 가 져 오 는 다음 combobox 를 만 듭 니 다.
url:'combobox_data.json'"/>
하지만 업무 상 제 이 슨 의 일부 필드 만 표시 하고 싶 을 수도 있 습 니 다.이 럴 때 는 loadFilter 방법 이 필요 합 니 다.
js 코드 는 다음 과 같 습 니 다. 페이지 를 불 러 올 때 url 의 값 을 가 져 오고 모두 표시 합 니 다.
	$(document).ready(function() {
		//      
		$.ui.combogrid.org(".org_id");
		$("#cbb").combobox({
			loadFilter:function(data){
			  return data;
			}
		});
	});
하지만 그 중의 일 부 를 표시 해 야 합 니 다. 이렇게 할 수 있 습 니 다.조건 에 따라 data 에서 원 하지 않 는 값 을 삭제 하고 data 로 돌아 갑 니 다.이렇게 하면 자신 이 원 하지 않 는 것 을 없 앨 수 있다.
$(document).ready(function(){
	$("#cbb").combobox({
		loadFilter:function(data){
			for(var i in data){
				if(data[i].value == "1"){
					data.splice(i,1);
				}
			}
			return data;
	});
});
splice () 방법 은 index 에서 시 작 된 0 개 이상 의 요 소 를 삭제 하고 매개 변수 목록 에서 설명 한 하나 이상 의 값 으로 삭 제 된 요 소 를 대체 할 수 있 습 니 다.위의 코드 에서 i 곳 의 요 소 를 삭제 합 니 다.
콤 보 박스 는 팝 업 상자 에 놓 여 있 고 기능 의 수요 에 따라 같은 콤 보 박스 가 서로 다른 드 롭 다운 값 을 표시 해 야 하기 때 문 입 니 다.
이 럴 때 삭제 하면 loadFilter 를 중복 호출 하면 splice 방법 을 계속 사용 하면 요소 가 부족 한 data 에서 계속 삭제 하 는 것 과 같 습 니 다.이렇게 하면 원 하 는 효과 에 이 르 지 못 한다.
필 자 는 이 를 바탕 으로 삭제 하기 전에 다른 배열 에 할당 한 값 을 생각 했 는데 결 과 는 실패 로 끝났다. 직접 할당 하기 때문에 다음 과 같다.
var data1 = data;
그러나 이러한 할당 값 은 data 1 이 data 가 가리 키 는 배열 을 직접 가리 키 기 때문에 data 가 삭제 하면 data 1 도 삭 제 된 요 소 를 가리킨다.직접 할당 은 얕 은 복사 이 고 얕 은 복사 라면 배열 요소 가 변 하지 않 은 수 요 를 만족 시 킬 수 없습니다.
그러나 이렇게 되면 저 에 게 value 가 존재 하지 않 는 다 는 것 을 알려 줄 것 입 니 다. 나중에 제 가 페이지 를 불 러 올 때 loadfilter 방법 으로 모든 url 의 값 을 불 러 와 야 한 다 는 것 을 알 게 되 었 습 니 다.종합 은 다음 과 같다.
	$(document).ready(function() {
		//      
		$.ui.combogrid.org(".org_id");
		$("#cbb").combobox({
			loadFilter:function(data){
			  return data;
			}
		});
	});
	$("#business_processe").combobox({
		loadFilter:function(data){
		var data1 = [];
		for(var i in data)
		{
			if(data[i].value==1)
			{
				data1.push(data[i]);
			}
			if(data[i].value==3)
			{
				data1.push(data[i]);
			}
		}
		return data1;
	  }  
	});
그러면 loadFilter 방법 을 직접 다시 호출 할 수 있 습 니 다. 다음 과 같 습 니 다.
	$("#business_processe").combobox({
		loadFilter:function(data){
		var data1 = [];
		for(var i in data)
		{
                        //      
                       if(data[i].value==4)
			{
				data1.push(data[i]);
			}
			if(data[i].value==6)
			{
				data1.push(data[i]);
			}
		}
		return data1;
	  }  
	});
나중에 동료의 지 도 를 받 아 조건 항 은 다음 과 같이 간소화 할 수 있다.
						$("#business_processe").combobox({
								loadFilter:function(data){
								var data1 = [];
								for(var i in data)
								{
                                                                        //        ,-1      
                                                                       if("13".indexOf(data[i].value)>-1)
									{
										data1.push(data[i]);
									}
								}
								return data1;
							}
						});

좋은 웹페이지 즐겨찾기