2017-03-22 5 views
0

내 콤보를 만들기 위해 select2를 사용하고 있습니다.select2, 쇼 전에 변경하는 방법

일부 요소는 사용할 수 없지만 내가 굵은하지만 그들을 보여주고 싶은 아리아 필수 = "false"를

var data= [{ 
    id="1", 
    value = "first", 
    disabled:true 
},{ 
    id="2", 
    value = "second", 
    disabled:false 
}, 

]; 
function formatResult(node) { 
    if(node.disabled){ 
    var $result = $('<span><strong>' + node.text + '</strong></span>'); 
    } else { 
    var $result = $('<span>' + node.text + '</span>'); 
    } 
    return $result; 
} 

$("#myCombo").select2({ 
    placeholder: 'Seleccione una opción', 
    width: "350px", 
    data: data, 
    formatSelection: function(item) { 
    return item.text 
    }, 
    formatResult: function(item) { 
    return item.text 
    }, 
    templateResult: formatResult 
}); 

};

작동

하지만 리 :

가 내가 실행하면, 디버거, 열 것
<li class="select2-results__option" role="treeitem" aria-disabled="true"> 
     <span style="padding-left:20px;"><strong>first</strong></span> 
</li> 

: 내가 원하는대로

$('.select2-results__option').attr('aria-disabled',false); 

작동,하지만 난 할 수 아니에요 이 programatically, 그것은 존재하지 않는 것 같습니다 beforeShow 함수, 어떻게 이것을 할 수 있습니까?

답변

1

일반적으로 시간 초과로이를 수행 할 수 있습니다.

$("#myCombo").select2({ 
    placeholder: 'Seleccione una opción', 
    width: "350px", 
    data: data, 
    formatSelection: function(item) { 
    return item.text 
    }, 
    formatResult: function(item) { 
    return item.text 
    }, 
    templateResult: formatResult 
}); 
setTimeout(function(){ 
    $('.select2-results__option').attr('aria-disabled',false); 
}); 
+0

작동하지만 setTimeout을 내 formatResult 함수에 넣어야합니다. 왜냐하면 선택을 클릭 할 때마다 호출되기 때문입니다. – cucuru