2013-09-29 4 views
1

입력 필드에서 Select2를 다중 선택으로 사용하고 있습니다. 어느 선택 항목을 클릭했는지 알아 내려고하지만 선택 항목 ("선택 사항 - 선택됨")을 클릭했을 때 발생하는 이벤트를 보면 선택된 모든 옵션이있는 데이터 배열 인 event.target.value 만 있습니다. (선택). 기본적으로 클릭 한 값에 액세스하여 사용자가 특정 선택 항목에서 사용자 지정 특성을 편집하도록 할 수 있습니다. 어떻게 그 일을 할 수 있을까요? 문제의Select2에서 클릭 한 선택 항목의 값을 가져 오거나 설정하십시오.

JSFiddle : http://jsfiddle.net/JtTTF/

$(test).bind("choice-selected", function(e) { 
alert(e.target.value); 
    // this is where i would like to access the clicked choice id so i can edit the custom data attribute "reason" 
}); 

답변

6

나는 이것을 또한 만났다. select2.js 소스 코드를 살펴본 후 선택 - 선택 이벤트가 두 번째 매개 변수 인 사용자가 클릭 한 dom 요소를 전달한다는 것을 알게되었습니다.

이 dom 요소는 "select2-data"키가있는 데이터 개체를 포함합니다. 내가 따라 your jsfiddle 업데이트되었습니다

$(test).on("choice-selected", function(e, choice) { 
    var data = $(choice).data('select2-data'); 
    alert(data.reason ? 'Reason: ' + data.reason : 'No Reason'); 
}); 

:

코드를 다음과 같이 보일 수 있습니다.

+0

귀하의 솔루션은 완벽하게 작동합니다. 고마워요! –

+1

이것을 달성하기 위해 사용하고있는 Select2 버전을 알려주십시오. 현재 문서에서 선택 항목의 이벤트에 대한 언급을 찾을 수 없습니다. http://ivaynberg.github.io/select2/#documentation – Marklar

+0

@ Marklar, 답변을 찾았습니까? 나 또한 choise-selected 이벤트를 찾지 못한다. 버전 버전을 사용한 David? – Erlan

0

을 시도해보십시오

var selected = {}; 
$(test).change(function() { 
    var selections = $(this).select2('data'); 
    $.each(selections, function (idx, obj) { 
     if (!selected[obj.id]) { 
      selected[obj.id] = obj; 
      $('#selectedText').text(JSON.stringify(obj)); 
      return false; 
     } 
    }) 
}); 

데모 : Fiddle

참고 :이 작업을 수행하는 붙박이 지원이 있는지 여부를 보지 못했다하지만, 맞춤 구현

관련 문제