2013-02-12 7 views
5

Sto utilizzando il plug-in jquery select2 per riformattare le mie opzioni di selezione lunghe. Tutto funziona come previsto, tranne quando invio il modulo il valore id viene salvato come valore, anziché il valore (in questo caso lang). Non riesco a capire cosa sto sbagliando.jQuery select2 reformats <select> ma invia l'ID opzione al posto del valore

Ecco cosa lo script appare come:

var langs=[{id:0,lang:'English'}, 
    {id:1,lang:'Afrikaans'}, 
    {id:2,lang:'Albanian'}, 
    {id:3,lang:'Zulu'}]; 

function format(item) { return item.lang; }; 

$("#field_4").select2({ 
        placeholder: "Select your language", 
        data:{ results: langs, text: 'lang' }, 
        formatSelection: format, 
        formatResult: format 
        }); 

Ecco il markup:

<input id="field_4" name="field_4" type="text" class="regular-text " value="3" /> 

Quando annoto il valore di ritorno nella console vedo questo:

{Object} 
    O: Object 
     id: "1" 
     text: "Afrikaans" 

AGGIORNAMENTO: Ho fatto dei progressi su questo. Se aggiungo quanto segue all'oggetto costruttore (per select2) posso salvare i valori corretti (invece dello id). Tuttavia, questo non funziona quando aggiungo allo <select> s che uso AJAX per ottenere le opzioni.

id : function(object) { 
return object.lang; 
} 
+0

Non è * previsto * per salvare l'ID? Quello * è * il valore; il 'lang' è il testo, non il valore. –

+0

Desidero che il modulo salvi il nome della lingua corrente. Non l'id. È possibile? – emersonthis

+0

Allora perché hanno anche gli id? O dovrei dire, avere solo id (ma renderli i nomi delle lingue) e impostare il valore "testo" su "id" invece di "testo". –

risposta

Problemi correlati