2013-06-06 4 views

Antwort

22

Eine Möglichkeit, dies zu tun ist ...

$('select').select2().select2('val', $('.select2 option:eq(1)').val()); 

Also im Grunde Sie zuerst initialisieren das Plugin dann den Standardwert geben Sie den ‚val‘ Parameter verwendet wird. Der tatsächliche Wert wird von der angegebenen Option genommen, in diesem Fall # 1. Der ausgewählte Wert aus diesem Beispiel wäre also "bar".

<select class=".select2"> 
    <option id="foo">Some Text</option> 
    <option id="bar">Other Text</option> 
</select> 

Hope das ist nützlich für jemand anderen.

+0

Ihre HTML-Markup hat ein Klasse mit einem '.' darin. Im Grunde wird Ihr Code den Wert nicht festlegen, weil Sie das falsche Element auswählen. – krishgopinath

+0

oder eher ein Element, das nicht existiert :) – krishgopinath

+0

Wenn Sie nach dem Setzen eines ausgewählten Wertes die Schaltfläche zum Löschen benötigen, verwenden Sie: $ ('. Select'). Select2 ({allowClear: true}). Select2 ('val', $ ('.select2-Option: eq (1)'). val()); –

41

Ein weiterer Weg - fügen Sie einfach ein selected = "selected" Attribut zum select Markup hinzu und rufen Sie select2 darauf an. Es muss Ihren ausgewählten Wert annehmen. Keine Notwendigkeit für zusätzliches JavaScript. Wie folgt aus:

Markup

<select class="select2"> 
    <option id="foo">Some Text</option> 
    <option id="bar" selected="selected">Other Text</option> 
</select> 

JavaScript

$('select').select2(); //oh yes just this! 

Siehe Geige: http://jsfiddle.net/6hZFU/

Edit: (! Danke, Jay Haase)

Wenn dies nicht funktioniert, versuchen Sie die val Eigenschaft select2 zu null Einstellung, um den Wert zu löschen, wie folgt aus:

$('select').select2("val", null); //a lil' bit more :) 

Danach ist es einfach genug val-"Whatever You Want" einzustellen.

+3

Ich konnte das obige JavaScript nicht für mich arbeiten lassen. Ich habe folgendes zur Arbeit gebracht: $ ("# id"). Select2 ("val", null); –

+0

obigen Code funktioniert gut für Einzelwert, aber im Falle von mehreren Werten wird nur ein Wert ausgewählt –

20
$("#id").select2("val", null); //this will not work..you can try 

Sie sollten dies tatsächlich tun ... initialisieren und dann den Wert einstellen. Nun, das ist auch die Art, wie es für mich funktionierte.

$("#id").select2().select2("val", null); 
$("#id").select2().select2("val", 'oneofthevaluehere'); 
+1

Dies funktionierte für mich, danke! – Matheno

+0

keine Freude hier. Mit oder ohne Initialisierung funktioniert das einfach nicht mit AJAX-Daten! – MC9000

0

Für ajax select2 mehrere Dropdown wählen ich mochte dies;

//preset element values 
    //topics is an array of format [{"id":"","text":""}, .....] 
     $(id).val(topics); 
      setTimeout(function(){ 
      ajaxTopicDropdown(id, 
       2,location.origin+"/api for gettings topics/", 
       "Pick a topic", true, 5);      
      },1); 
     // ajaxtopicDropdown is dry fucntion to get topics for diffrent element and url 
0
$('select').select2("val",null); 
+1

Bitte bearbeiten Sie mit mehr Informationen. Code-only und "try this" Antworten werden abgeraten, da sie keine durchsuchbaren Inhalte enthalten und nicht erklären, warum jemand "das versuchen sollte". Wir bemühen uns, eine Ressource für Wissen zu sein. –

4

Die obigen Lösungen für mich nicht funktioniert hat, aber dieser Code aus eigenen Website Select2 tat:

$('select').val('US'); // Select the option with a value of 'US' 
$('select').trigger('change'); // Notify any JS components that the value changed 

Webpage found here

hoffe, das hilft für jedermann, wie kämpft, Ich war.

0

Wenn Sie ein Array-Datenquelle verwenden, können Sie so etwas wie unten tun -

$(".select").select2({ 
    data: data_names 
}); 
data_names.forEach(function(name) { 
    if (name.selected) { 
     $(".select").select2('val', name.id); 
    } 
}); 

Dies setzt voraus, dass das ein Element aus Ihrem Datensatz, die Sie festlegen möchten als Standard bezeichnet ein zusätzliches Attribut ausgewählt und wir verwenden das, um den Wert festzulegen.

0

Für 4.x Version

$('#select2Id').val(__INDEX__).trigger('change'); 

Wert mit INDEX wählen

$('#select2Id').val('').trigger('change'); 

nichts zu wählen (Show Platzhalter, wenn es)