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;
}
Non è * previsto * per salvare l'ID? Quello * è * il valore; il 'lang' è il testo, non il valore. –
Desidero che il modulo salvi il nome della lingua corrente. Non l'id. È possibile? – emersonthis
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". –