2013-05-30 1 views
5

Come impostato nella voce dell'elenco a discesa selezionata dall'utente?jquery Select2 Ajax - Come impostare il valore (initSelection)

Scenario:
1. L'utente non inserire tutti i valori richiesti in forma
2. Fare clic su mandato.
3. La pagina è aggiornata e il valore nell'elenco a discesa non è selezionato. Come selezionare il valore?

Ho uno script di lavoro che recupera i dati per l'elenco.

$('#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; 
} 
}); 

dati standard in chiamata AJAX: { "testo": "il testo del campione", "id": "1"}

ingresso:

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

ho cercato di aggiungere il seguente codice, ma non funziona

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

risposta

0

assicurarsi che avete un JSON oggetto formattato correttamente essere restituito nella chiamata indietro nel initSelection. La discussione per questo è già stata indirizzata allo here.

Ma finora sembra buono. È possibile che si desideri l'evento bind the change dell'evento select o submit del modulo per serializzare il suo valore prima che il modulo venga inviato.

È possibile memorizzare il valore sul server (yucky) o semplicemente serializzare l'oggetto modulo e ottenere il valore da passare a initSelection quando viene selezionato select2.

Che è ciò che sarebbe accaduto qui:

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

Ecco una semplice example di serializzare il modulo.

PS: Non vedo davvero cosa abbia a che fare il bootstrap con qualcosa.