2013-02-12 3 views
5

Ich benutze das 0quotquest-Plugin select2, um meine Long-Select-Optionen neu zu formatieren. Alles funktioniert wie erwartet, außer wenn ich das Formular abschicke, wird der id Wert als Wert gespeichert, anstelle des Wertes (in diesem Fall lang). Ich kann nicht herausfinden, was ich falsch mache.jQuery select2 reformats <select> aber übergibt die Option ID anstelle des Werts

Hier ist, was das Skript wie folgt aussieht:

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 
        }); 

Hier ist das Markup:

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

Als ich den Rückgabewert in der Konsole anmelden Ich sehe dies:

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

UPDATE: Ich habe dabei einige Fortschritte gemacht. Wenn ich dem Konstruktorobjekt (für select2) Folgendes hinzufüge, kann ich die korrekten Werte speichern (anstelle der id). Dies funktioniert jedoch nicht, wenn ich zu den <select> s hinzufüge, die AJAX verwenden, um die Optionen zu erhalten.

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

Ist es nicht * soll * die ID speichern? Das ist * der Wert; Die 'lang' ist der Text, nicht der Wert. –

+0

Ich möchte, dass das Formular den Namen der aktuellen Sprache speichert. Nicht die ID. Ist das möglich? – emersonthis

+0

Warum haben Sie dann auch IDs? Oder soll ich sagen, habe nur ids (aber mache sie zu den Sprachnamen) und setze den "text" -Wert auf "id" anstelle von "text". –

Antwort