2016-05-21 12 views
0

Ich abzurufen Form mit .Load jQuery-Funktion und legt es im Dokumentkörper.Ajax Formularauswahl ändert sich nicht in jQuery .serialize/.val

Danach ändere ich den Wert (manuell) und versuche, das Formular mit ajax .post Anfrage zu speichern.

Wählen Sie den Wert, der von jQuery in irgendeiner Weise (mit .val oder sereilize) abgerufen wird, ändert sich nicht. Der Wert bleibt so wie er gerendert wurde.

Ohne prevetnDefault (mit einfacher POST-Anfrage) Formular speichert wie erwartet. Aber beide .val bei Auswahl oder .sereilize auf Formular gibt alten Auswahlwert zurück (nicht wirklich ausgewählt).

<form 
     id="phrase-fake-form-12243" 
     method="POST" 
     action="/phrase-fake/change-group/12243/3"> 

      <input type='hidden' name='csrfmiddlewaretoken' value='UQuHH3ahAnBaSUPsCBaF1QKF4I0O48AO' /> 
      <select name="group" id="phrase-fake-modal-group-dropdown"> 

        <option value="20393" 
          selected="selected"> 
         1 
        </option> 

        <option value="20405" 
          > 
         2 
        </option> 

        <option value="20417" 
          > 
         3 
        </option> 
      </select> 
      <input type="submit" value="Сохранить" class="ui button blue"> 
     </form> 

JS:

<script> 

$("#phrase-fake-form-12243").submit(function (event) { 

    console.log($('#phrase-fake-form-12243').serialize()) 
    console.log($('#phrase-fake-modal-group-dropdown').dropdown('get value')) 
    $.post('/phrase-fake/change-group/12243/3', $('#phrase-fake-form-12243').serialize()) 

    event.preventDefault(); 
}); 
</script> 

Was mache ich falsch? Eigentlich ist es scheint wie ein Bug ..

+1

die alle Formularelementwerte erhalten Und was '.dropdown()', bist du hier eine Art Plugin – adeneo

+0

Es schien, dass jQuery der alten Versionen 'serialize()' für ausgewählte Elemente nicht unterstützen –

+0

Wenn das der Fall ist, aktualisieren Sie Ihre jQuery –

Antwort

0

Versuchen Sie, diese Bibliothek verwenden, form2js

Sie müssen nur die Methode aufrufen .toObject() auf dem jQuery-Objekt. Zum Beispiel, wenn dies Ihre html

<form id="test"> 
... 
</form> 

Sie können

var formObject = $("#test").toObject();