2013-05-30 10 views
5

Jak ustawić w liście rozwijanej element wybrany przez użytkownika?jquery Select2 Ajax - Jak ustawiona wartość (initSelection)

Scenariusz:
1. Użytkownik nie wprowadzić wszystkie wymagane wartości w postaci
2.Kliknij wysłana.
3. Strona jest odświeżana, a wartość na liście rozwijanej nie jest zaznaczona. Jak wybrać wartość?

Mam działający skrypt, który pobiera dane dla listy.

$('#userid').select2({ 
placeholder : " --- select ---", 
minimumInputLength: 2, 
ajax: { 
    url: "index.php?modul=getusers", 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'json', 
    data: function (term, page) { 
     return { 
      q: term, 
      page_limit: 10 
     }; 
    }, 
    results: function (data, page) { 
     return { results: data }; 
    } 
}, 
allowClear: true, 
formatSelection: function(data) { 
    return data.text; 
} 
}); 

standardowe dane w wywołaniu ajax: { "text": "przykładowy tekst", "id": "1"}

Wejście:

 <input type="text" value="<? echo $_POST['userid']; ?>" class="input" id="userid" name="userid">

Próbowałem dodać następujące kod, ale to nie działa

initSelection: function(element, callback) { 
    var id=$(element).val(); 
    if (id!=="") { 
     $.ajax("index.php?modul=getusersfriend&q="+id, { 
     dataType: "json" 
     }).done(function(data) { callback(data); }); 
    } 
}, 

Odpowiedz

0

Upewnij się, że masz prawidłowo sformatowany obiekt JSON zwracane w oddzwaniania w initSelection. Dyskusja na ten temat została już podjęta pod adresem here.

Ale do tej pory wygląda dobrze. Możesz chcieć zdarzenie bind the change zdarzenia select lub submit formularza, aby serializować jego wartość przed przesłaniem formularza.

Możesz przechowywać jego wartość na serwerze (yucky) lub serializować obiekt formularza i uzyskać wartość do przekazania do initSelection po załadowaniu select2.

co jest, co by się stało tutaj:

var id=$(element).val(); 

Oto prosty example od szeregowania formularza.

PS: Naprawdę nie widzę, co bootstrap ma do czynienia z niczym.

Powiązane problemy