봉 블로그

jquery multi select 처리 본문

ajax_js

jquery multi select 처리

idkbj 2011. 8. 26. 17:52
 
select option 생성해주는 유틸함수 정의.
$.fn.addOptions = function(jsonData, selected, valueView, firstOption) {
		 
		 return this.each(function(){
			 
			if (this.tagName != 'SELECT'){
				return;
			}
			var selectElement = this;
			
			if ($.browser.msie && firstOption) {
	        	selectElement.add(new Option(firstOption, ""));
	        } else if(firstOption){
	        	selectElement.add(new Option(firstOption, ""), null);
	        }
			
		    $.each(jsonData, function(index, optionData) {
		    	var text = this.text;
		    	
		    	if(valueView){
		    		text = text + " (" + this.value + ")";
		    	}
		    	
		        var option = new Option(text, this.value);
		        
		        if ($.browser.msie) {
		        	selectElement.add(option);
		        } else {
		        	selectElement.add(option, null);
		        }
		    });
		    if( selected ) {
		    	$("option[value='"+selected+"']", this).attr("selected", "true");
		    	$(this).trigger("change");
		    }
		 });
	};

사용방법
  // 응답은 text, value 가 포함된 json 이어야 함.
  $("select[name='sel1']").change(onChangeSelect);// 다른 selectbox 변경토록 이벤트 걸기.

  $("select[name='sel1']").children().remove();//초기화..
  var params = { "param1" : "value1" };
  $.getJSON("url...", params, function(data, textstatus) {
        	
      $("select[name='sel1']").addOptions(data.rows, "selectedValue", true, "::선택하세요::");
  });

  function onChangeSelect(){
       // 다른 select 변경하기.
       $("select[name='sel2']").children().remove();//초기화..
       $.getJSON("url...", params, function(data, textstatus) {
        	
              $("select[name='sel2']").addOptions(data.rows, "selectedValue", true, "::선택하세요::");
        });

  }