2015-07-07 13 views
11

Ich habe eine Liste, die vom Typ select2 ist.Select2 Deaktivieren/Aktivieren der spezifischen Option

<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> 

Ich möchte Option deaktivieren, die Wert wird mit = 1 so tat ich wie dieses

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

Es ist in Ordnung arbeiten, aber wenn ich will wieder aktivieren i deaktiviert Option versucht unter den Codes, aber die Option select2 ist deaktiviert.

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

aber seltsam ist deaktiviert Eigenschaft der Option ist entfernt.aber select2 Option bleibt deaktiviert.

Nicht erhalten, wie man das löst. Brauche Hilfe.

Update: Wenn ich DOM von select2 überprüfe, hat diese Eigenschaft auch nach dem Entfernen von disfinf deaktiviert.

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

wenn ich machen Arie-disabled = "false" es ermöglichen wird. nicht in der Lage zu bekommen, was die Ursache ist.

+2

Haben Sie versucht, '.select2 (...)' erneut auf dem Element aufzurufen, nachdem das deaktivierte Attribut geändert wurde? – CBroe

+1

$ ("# list> optgroup> option [wert = '1']"). Prop ('deaktiviert', false); $ ("# list> optgroup> option [wert = '1']"). RemoveProp ('disabled'); $ ("# list"). Select2(); –

+0

@CBroe das Problem mit der Re-Freigabe der Option. Funktion deaktivieren funktioniert ordnungsgemäß. Ich habe versucht, select2() aufzurufen. es funktioniert richtig. Aber ich bin nicht in der Lage zu bekommen, was ist das Problem in select2? –

Antwort

14

Wahrscheinlich einfachste Weg, dies zu erreichen, .select2(…) auf dem Elemente Aufruf nach dem disabled-Attribute zu ändern wieder würde.

http://jsfiddle.net/xoxd2u15/

Seit select2 ersetzt das ursprüngliche Auswahlfeld mit benutzerdefinierten HTML-Elementen (und versteckt sich das Original), und anscheinend nicht für Veränderungen in ihrem deaktivierten Zustand die Optionen des ursprünglichen select-Element „watch“ ständig Nach dem Aufruf müssen Sie ihn nach dem Ändern des Zustands erneut aufrufen, damit er die aktuellen Attributwerte aus den Optionen des ursprünglichen Elements liest.

+3

Dies ist [ein bekannter Fehler] (https://github.com/select2/ select2/issues/3347) in Select2 4.0.0 Die Eigenschaft 'disabled' ist im Cache gespeichert, aber die 'selected' (und andere Eigenschaften) sind nicht –

+0

Hey @Kevin, danke für die Info, ich bin froh zu sehen, dass du arbeitest auf die Korrektur für zukünftige Versionen. – CBroe

2

Für Disable Try this:

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

deaktivieren diese entfernen Versuche:

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

Ich tat das Gleiche. Es ist immer noch deaktiviert. Bitte überprüfe meine Frage einmal. –

+0

Geige funktioniert nicht :( –

+0

Entschuldigung Versuchen Sie das. Http://jsfiddle.net/mzxn5a2f/ – answer99

Verwandte Themen