2013-04-30 9 views
16

Ich arbeite mit dem fantastischen select2 control.Wie man vollständig select2 Steuerung säubert?

Ich versuche, die select2 mit dem Inhalt zu reinigen und zu deaktivieren, auch so mache ich das:

$("#select2id").empty(); 
$("#select2id").select2("disable"); 

Ok, es funktioniert, aber wenn ich einen Wert hatte, ausgewählt alle Elemente entfernt werden, die Steuerung ist deaktiviert, aber der ausgewählte Wert wird weiterhin angezeigt. Ich möchte den gesamten Inhalt löschen, damit der Platzhalter angezeigt wird. Hier ist ein Beispiel, das ich habe, wo Sie das Problem sehen: http://jsfiddle.net/BSEXM/

HTML:

<select id="sel" data-placeholder="This is my placeholder"> 
    <option></option> 
    <option value="a">hello</option> 
    <option value="b">all</option> 
    <option value="c">stack</option> 
    <option value="c">overflow</option> 
</select> 
<br> 
<button id="pres">Disable and clear</button> 
<button id="ena">Enable</button> 

Code:

$(document).ready(function() { 
    $("#sel").select2(); 

    $("#pres").click(function() { 
     $("#sel").empty(); 
     $("#sel").select2("disable"); 
    }); 

    $("#ena").click(function() { 
     $("#sel").select2("enable"); 
    }); 
}); 

CSS:

#sel { 
    margin: 20px; 
} 

Haben Sie eine Idee haben, oder Ratschläge dazu?

+0

Titel ist Missleading. Bitte ändern Sie für zukünftige Leser. – ManuelSchneid3r

Antwort

25

Warum all diese Probleme ???

Verwendung:

$('#sel').select2('data', null); 
+1

Pefect! Vielen Dank! :) – harrison4

+0

Schön und einfach .... :) – PSL

+1

Diese Methode ist veraltet und wird in Select2 entfernt 4.1 –

1

Versuchen Sie folgendes: - http://jsfiddle.net/GqbSN/

$(document).ready(function() { 
    $("#sel").select2(); 

    $("#pres").click(function() { 
     $('#s2id_sel > a > span').text($(sel).data('placeholder')); 
     //$('.select2-container > a > span').text('This is my placeholder'); 
     $("#sel").select2("disable");; 
     }); 

    $("#ena").click(function() { 
     $("#sel").select2("enable"); 
    }); 
}); 

Hinweis

$ ('# s2id_sel> a> Spanne') Text ($ (sel) .data ('Platzhalter. ')); Was ich verstehe, wenn ich dieses Plugin betrachte, ist das Markup, das es aus der Auswahl erzeugt, die wir bereitstellen, es erzeugt ID als # s2id_ + "yourselectelementid". Das wäre also ein besserer Weg, es zu verwenden, wenn Sie mehrere Auswahlsteuerelemente haben und nur einige oder nur eines davon deaktivieren möchten.

Wenn Sie die ausgewählten Inhalte löschen möchten: - http://jsfiddle.net/G7TXj/

+1

Es sollte funktionieren, außer, Sie müssen diese Zeile entfernen $ ("# sel"). Leer(); ' –

+0

Er will nicht den Inhalt löschen? – PSL

+0

Ich habe jetzt beide Versionen angelegt .. Wahrscheinlich klar, meinte er klar die Auswahl. Danke für das Aufzeigen .. – PSL

13

Probieren Sie dies aus offiziellen select2 Dokumentationen.

$("#sel").val(null).trigger("change"); 

Hinweis: Dies ist für select2 v4 aktualisiert.

+1

OMG, das ist es! Keines der oben genannten funktionierte für mich. Ich denke, diese Lösung ist für Select2 v4 – sr9yar

+0

diese Lösung für mich funktioniert. Danke –

15

Jedes Mal, wenn Sie ändern oder einen Wert in select2 ändern versuchen, den Auslöser zu verwenden ("change")

$('#sel').empty().trigger("change");

+3

Die Verwendung von leer() anstatt Wert (null) funktionierte für mich auf Select2 4.0.3, danke! –

+1

mit leeren() arbeitete auch für mich. $ ("# id"). empty() –

+0

Ja, das funktioniert auch für mich ~~ :) –

0

Mein select2 in erster Option "all".Diese Option löscht die anderen Optionen und die erste Option

var $eventSelect = $("#storeList"); 
    $("#storeList").on("change", function (e) { 
     if (e.added != undefined) { 
      if (e.added.id == 0 && e.val.length>1) { 
        removeTags(); 
       $("#storeList").val('0').select2(); 

      } 

     } 

    }); 

    function removeTags(){ 
     $eventSelect.select2('data', null); 

    } 
Verwandte Themen