2014-03-03 14 views
6

Ich versuche, einige der select2 Optionen zu verstecken, aber wenn ich etwas wie folgt aus:Hiding select2 Optionen

<option style="display: none;">...</option> 

select2 ignoriert es, anders als wenn ich eine Option zu deaktivieren, oder sie machen „Read-only“ .

Irgendwelche Ideen?

+0

ich das gleiche Problem zu lösen, könnte man dieses Thema findet http: // Stackoverflow. com/questions/25064487/select2-verstecken-bestimmte-Optionen-dynamisch/25085053 # 25085053 – holmes2136

Antwort

0

warum brauchen Sie das? Einfach: Entfernen Sie diese Option!

Wenn Sie nur in einigen Fällen zeigen müssen, können Sie Javascript verwenden.

mit jQuery Beispiel:

if (condition) { 
    $('#yourselect').append('<option value="foo" selected="selected">Foo</option>'); 
} 
+2

Ich habe das schon getan, aber ich hatte auf eine elegante Lösung gehofft. –

+18

Ich habe keine Antworten mehr, die dir sagen, dass du nichts tun sollst. Was, wenn er die Sortierreihenfolge beibehalten möchte, eine Option, die er noch einmal zeigen will? –

-4

Sie es mit disabled="disabled" Attribut deaktivieren.

<option value="4" disabled="disabled">Product 4</option> 

Siehe diese fiddle

+4

Dies verdeckt die Option nicht ... Und Ihr Beispiel war einfach html, ich spreche über das select2-Plugin. –

+0

Fügen Sie einige CSS hinzu und es wird '.select2-container - default.select2-results__option [aria-disabled = true] {display: none;}' –

0

Vielleicht ist die Frage ist alt, aber ich habe hier für das gleiche Problem. . ich die select2 v bin mit 3.5.1, konnte ich es so beheben:

ich eine Klasse auf die Option hinzufügen, die ich ausblenden möchten:

<option class="hide_me">...</option> 

, die angeblich sein etwas wie:

Grundsätzlich mache ich das gleiche, das Sie durch das Stilattribut getan haben, aber mit einer CSS-Klasse. Das style-Attribut funktioniert auch nicht für mich (selbst wenn das Multi-select2 die ausgewählten Optionen so auszublenden scheint).

Hoffe, das kann helfen.

+0

IDK über select2 v3.5.1, aber diese Lösung funktioniert einfach nicht v4. – naXa

0

Sie sollten die Optionen entfernen, die nicht verfügbar sein sollten. Wenn Sie dies dynamisch in JavaScript durchführen müssen, können Sie zuerst das vollständig bestückte Element <select> klonen. Sie können jederzeit alle Optionen aus dem ursprünglichen <select> entfernen und nur die Optionen kopieren, die Sie gerade verfügbar haben möchten. Auf diese Weise verlieren Sie keine Styling, Meta-Daten usw. Sortierung

Hier ist ein Beispiel:

$(document).ready(function() { 
    var select = $(".yourselect"); 
    var selectClone = select.clone(); 

    function updateSelect() { 
     var oldVal = select.val(); 

     // first, remove all options 
     select.find("option").remove(); 

     // now add only those options that should be available from the clone 
     // replace "data-show='yes'" with whatever you criteria might be 
     var options = selectClone.find("option[data-show='yes']").clone(); 
     select.append(options); 

     // restore previously selected value if it is still possible 
     if (select.find("option[value='" + oldVal + "']").length === 0) { 
      oldVal = ""; 
     } 
     select.val(oldVal); 

     // update select2 
     select.trigger('change'); 
    } 
});