2013-06-06 12 views

Odpowiedz

22

Jednym ze sposobów osiągnięcia tego celu jest ...

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

Więc w zasadzie najpierw initalize plugin następnie określić wartość domyślną za pomocą parametru „val”. Rzeczywista wartość jest pobierana z określonej opcji, w tym przypadku nr 1. Tak więc wybrana wartość z tego przykładu będzie "bar".

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

Mam nadzieję, że jest to przydatne dla kogoś innego.

+0

Twój html znaczników ma klasa z "." w nim. więc w zasadzie twój kod nie ustawi wartości, ponieważ wybierasz niewłaściwy element. – krishgopinath

+0

lub raczej element, który nie istnieje :) – krishgopinath

+0

Jeśli potrzebujesz mieć przycisk "wyczyść" po ustawieniu wybranej wartości użyj: $ (". Select"). Select2 ({allowClear: true}). Select2 ('val', $ (".select2 opcja: eq (1)"). val()); –

41

Jeszcze jeden sposób - wystarczy dodać atrybut selected = "selected" do znacznika select i zadzwonić pod numer select2. Musi wziąć wybraną przez ciebie wartość. Nie potrzeba dodatkowego JavaScriptu. Tak:

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! 

Zobacz skrzypce: http://jsfiddle.net/6hZFU/

Edycja: (! Dzięki, Jay Haase)

Jeśli to nie zadziała, spróbuj ustawić właściwość select2val do null, aby usunąć wartość, podobnie jak to:

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

po tym, że jest na tyle prosty, aby ustawić val do "Whatever You Want".

+3

Nie mogłem uzyskać powyższego skryptu JavaScript, by działał dla mnie. Otrzymałem następujące polecenie do pracy: $ ("# id"). Select2 ("val", null); –

+0

powyższy kod działa poprawnie dla pojedynczej wartości, ale w przypadku wielu wartości wybierana jest tylko jedna wartość –

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

Trzeba rzeczywiście to zrobić ... intialise a następnie ustawić value..well Jest to również sposób, w jaki pracował dla mnie.

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

To działało dla mnie, dzięki! – Matheno

+0

nie ma tu radości. Z inicjalizacją lub bez, to po prostu nie działa z danymi AJAX! – MC9000

0

Dla ajax select2 wybierz kilka rozwijanych, które mi się podobają;

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

Edytuj i podaj więcej informacji. Tylko kod i odpowiedź "spróbuj tego" są odradzane, ponieważ nie zawierają treści do wyszukiwania i nie wyjaśniają, dlaczego ktoś powinien "spróbować tego". Staramy się być źródłem wiedzy. –

4

powyższych rozwiązań nie działa dla mnie, ale ten kod z własnej stronie internetowej select2 za zrobił:

$('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

Nadzieja pomaga to dla każdego, kto ma problemy, jak Byłam.

0

Jeśli używasz źródła danych tablicy można zrobić coś jak poniżej -

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

ta zakłada, że ​​z danych ustawić jeden element, który chcesz ustawić jako domyślny posiada dodatkowy atrybut o nazwie wybranego i używamy go do ustawienia wartości.

0

Dla 4.x wersji

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

aby wybrać wartość z INDEX

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

wybrać nic (pokaz zastępczy jeśli jest)

Powiązane problemy