Korzystam z wtyczki jquery select2, aby sformatować moje długie opcje wybierania. Wszystko działa zgodnie z oczekiwaniami, z wyjątkiem sytuacji, gdy przesyłając formularz, wartość id
zostaje zapisana jako wartość zamiast wartości (w tym przypadku lang
). Nie mogę zrozumieć, co robię źle.jQuery select2 reformats <select>, ale przesyła identyfikator opcji zamiast wartości
Oto co skrypt wygląda następująco:
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
});
Oto markup:
<input id="field_4" name="field_4" type="text" class="regular-text " value="3" />
Kiedy loguję wartości zwracanej w konsoli widzę tak:
{Object}
O: Object
id: "1"
text: "Afrikaans"
AKTUALIZACJA: Poczyniłem pewne postępy w tej sprawie. Jeśli dodaję następujące polecenie do obiektu konstruktora (dla select2), mogę zapisać poprawne wartości (zamiast id
). Jednak to nie działa, gdy dodaję do <select>
s, które używają AJAX, aby uzyskać opcje.
id : function(object) {
return object.lang;
}
Czy to nie * przypuszczenie *, aby zapisać identyfikator? To * jest * wartością; 'lang' to tekst, a nie wartość. –
Chcę, aby formularz zapisywał rzeczywistą nazwę języka. Nie id. czy to możliwe? – emersonthis
Więc dlaczego masz nawet identyfikatory? Czy powinienem powiedzieć, mam tylko identyfikatory (ale sprawiają, że są to nazwy języków) i ustaw "tekst" na "id" zamiast "tekst". –