2011-11-06 3 views
2
select select 이벤트가 정의 된 combobox가 있습니다.

선택 기능에서 콤보 박스 값을 얻는 방법?

 $.widget("ui.combobox", { 
    _create: function() { 
     var self = this, 
     select = this.element.hide(), 
     selected = select.children(":selected"), 
     value = selected.val() ? selected.text() : ""; 
     var input = this.input = $("<input>") 
     .insertAfter(select) 
     .val(value) 
     .autocomplete({ 
      delay: 0, 
      minLength: 0,    
      source: ... 

      select: function(event, ui) { 
      // 
      }, 
     }) 

ui.item.value와 함께 select 함수에서 combobox 값을 얻을 수 있지만 combobox id - $("#cbCity").val()에 의해 같은 값을 얻으려고하면 항상 초기 값을받습니다. 이 함수는 3 개의 콤보 박스에 대해 정의되고 선택 함수에서 모든 값을 가져와야하기 때문에 ui.item.value을 사용할 수 없습니다.

$("#cbCountry").val()+'-'+$("#cbCity").val()+'-'+$("#cbOrg").val() 

데모 here를 참조하십시오.

select 함수에서 select 옵션을 동적으로 생성해야하는 것처럼 보입니다.

<option value="value">label</option> 

다음과 같이 초기 코드에서 선택한 것처럼 표시합니다.

 select: function(event, ui) { 
    ui.item.option.selected = true; 
    self._trigger("selected", event, { 
     item: ui.item.option 
    }); 
    } 

그러나 나는 아닙니다. 그것을하는 방법을 확실히 - http://jsfiddle.net/and7ey/k2J5v/4/.

+0

이미 선택된 항목에 대해서는'$ ('# cbCountry'). next(). val()'을 사용할 수 있습니다. – hyperslug

+0

@hyperslug, 그것은 작동하지만 입력에서 값을 가져 오는 것처럼 보입니다. select가 아닌 것입니다. 따라서 select 옵션 값이 아닌 입력 텍스트 값을 반환합니다. –

+0

'success' 콜백에 전체 텍스트를 저장하지 않으시겠습니까 :'value : item.label'? – hyperslug

답변

0

콤보 상자에서 선택한 각 항목을 반복해야합니다. 예를 들어이 도움이

var test_arr = new Array(); 
    $("#test1 option:selected").each(function() { 
     test_arr.push($(this).val()); 
    }); 

Fiddle

희망!

+0

jsfiddle 링크가 잘못되었습니다. 그리고 나는 실제로 그런 옵션이 추가되지 않았기 때문에 그러한 접근이 도움이 될 것이라고 생각하지 않습니다. (값은 원격 소스에서 읽혀지고'

관련 문제