2013-02-12 14 views
5

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; 
} 
+0

Czy to nie * przypuszczenie *, aby zapisać identyfikator? To * jest * wartością; 'lang' to tekst, a nie wartość. –

+0

Chcę, aby formularz zapisywał rzeczywistą nazwę języka. Nie id. czy to możliwe? – emersonthis

+0

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". –

Odpowiedz

Powiązane problemy