webentwicklung-frage-antwort-db.com.de

jQuery .val () funktioniert nicht für Eingabefelder

Ich versuche, den Wert meiner Eingabefelder zu erfassen, und habe dazu in meiner Formularklasse folgende Methode:

getData: function() {
    var fields = ['name', 'email', 'message'];
    $.each(fields, function(index, el) {
        form.data[el] = $('#'+el).val();
        console.log(form.data[el]);
    });
},

(Das "select" -Feld nicht vergessen, das ist ein benutzerdefiniertes Auswahlfeld, und ich muss das anders behandeln.). Ich führe das Capture bei Formularänderungsereignissen aus etwas wie das:

<input type="text" id="name">
<input type="email" id="email">
<textarea name="message" id="message"></textarea>

Wenn ich nun etwas in die Felder eingebe, bekomme ich nur Wert aus dem Textbereich, während andere Eingaben mir undefiniert geben.

Ich werde auch bemerken, dass das Formular mit Ajax geladen wird, aber da es normalerweise das Änderungsereignis auf den Feldern erfasst, bezweifle ich, dass dies das Problem ist.

12
Nicolas

Ich habe es herausgefunden.

Mir fehlte das Namensattribut in meinen Eingabefeldern, und aus irgendeinem Grund brauchte .val () das, um zu funktionieren.

23
Nicolas

"Gemäß den Empfehlungen von W3C kann ein HTML-Code nur dann Daten senden, wenn das Eingabefeld einen Steuerelementnamen hat. IDs zählen nicht." Nun, das ist alles in Ordnung und gut (in der Tat unbezahlbar), aber jQuery .val() würde glauben, dass es den id= als Selektor verwenden kann, wenn Sie dieses Beispiel betrachten. Meine Tests haben gezeigt, dass man nicht nur id= und name= haben muss, sondern dass sie gleich sind. Ich liebe dieses Zeug, wenn es funktioniert! 

Nein, Sie müssen nicht sowohl das Namens- als auch das ID-Attribut haben, damit val funktionieren kann. Ich hatte es getestet, nur mit id funktioniert .val () einwandfrei 

1
hoogw