2015-07-07 14 views
11

Seçme tip2 olan listeye sahibim.Select2 özel seçeneği devre dışı/etkinleştir

<select id="list" class="form-control select2 select2-hidden-accessible" tabindex="-1" aria-hidden="true"> 
<optgroup label="Types"> 
<option value="None">None</option> 
<option value="1">One</option> 
<option value="2">Two</option> 
</optgroup> 
</select> 

Ben değerine sahip seçeneği devre dışı bırakmak istediğiniz = 1 yüzden bu iyi çalışıyor bu

$("#list>optgroup>option[value='1']").prop('disabled',true); 
    Result:// <option value="1" disabled>One</option> 

gibi yaptı; ama isterseniz ben denedim engelli seçeneğini yeniden etkinleştirmek Aşağıdaki kodlar ancak yine de select2 seçeneği devre dışıdır.

$("#list>optgroup>option[value='1']").prop('disabled',false); 
$("#list>optgroup>option[value='1']").removeProp('disabled'); 
    Result:// <option value="1">One</option> 

Ancak garip devre dışı bırakılan seçeneğin özelliği kaldırılır.but select2 seçeneği devre dışı kalır.

Bunu nasıl çözemeyeceğiniz. Yardıma ihtiyacım var.

Güncelleme: select2'nin DOM'ını kontrol edersem, removeinf devre dışı bırakıldıktan sonra bile bu özelliği yaşıyordur.

<li class="select2-results__option" id="select2-template-type-list-result-4qd3-merge" role="treeitem" aria-disabled="true">One</li> 

ben sağlayacak = arya özürlü "false" yaparsanız. nedenini alamıyorum.

+2

Engellenmiş özniteliği değiştirdikten sonra, eleman üzerinde '.select2 (…)' ifadesini tekrar denediniz mi? – CBroe

+1

$ ("# liste> optgroup> seçenek [value = '1']") prop ('disabled', false); $ ("# liste> optgroup> seçenek [value = '1']"). RemoveProp ('disabled'); $ ("# liste") select2(); –

+0

@CB seçeneği yeniden etkinleştirerek sorunu düzeltin. işlevi düzgün çalışmayı devre dışı bırakın. Select2() 'yi aramayı denedim. düzgün çalışıyor. Ama select2'de sorun ne elde edemiyorum? –

cevap

14

Muhtemelen en kolay yolu bunu başarmak için, yine engelli özelliğini değiştirdikten sonra elemana .select2(…) arayarak olacaktır.

http://jsfiddle.net/xoxd2u15/

Select2 sürekli devre dışı durumda değişiklikler için orijinal seçme elemanının seçenekleri “izlemek” değil anlaşılan özel HTML elemanları ile orijinal seçme alanını değiştirir (ve orijinal gizler) ve yana Çağırma işleminden sonra, durumu değiştirdikten sonra bir kez daha çağırmanız gerekir, böylece orijinal öğe seçeneklerinden geçerli öznitelik değerlerini okur.

+3

Bu [bilinen bir hata] (https://github.com/select2/ select2/issue/3347) Select2 4.0.0. 'disabled' özelliği önbelleğe alınmış, ancak' selected' (ve diğer özellikler) değil –

+0

Hey @Kevin, teşekkürler bilgi için teşekkürler. gelecekteki sürümler için bunu düzeltmek üzerine. – CBroe

2

devre dışı bırak için bu deneyin:

$("#list>optgroup>option[value='1']").attr('disabled','disabled'); 

devre dışı bırak bu deneyin kaldırmak için:

$("#list>optgroup>option[value='1']").removeAttr('disabled'); 
+0

ben de aynısını yaptım. Hala devre dışı. Lütfen soruma bir kez bakın. –

+0

çalışma değil :( –

+0

Üzgünüm Bunu deneyin http://jsfiddle.net/mzxn5a2f/ – answer99