jQuery .val() funktioniert nicht für Eingabefelder

Lesezeit: 2 Minuten

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

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

(Egal das ‘Select’-Feld, das ist ein maßgeschneidertes Auswahlfeld und ich muss das anders handhaben) Ich führe die Erfassung bei einem Formularänderungsereignis durch. Die Eingabefelder haben alle richtige IDs, sie sehen etwa so aus:

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

Wenn ich jetzt etwas in die Felder eintippe, bekomme ich nur Werte 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 in den Feldern erfasst, bezweifle ich, dass dies das Problem ist.

  • Bestätigen Sie, dass Sie keine anderen Elemente mit doppelter ID haben, die Probleme verursachen – aus diesem Grund sollte Arbeit.

    – Nick Dickinson-Wilde

    28. Januar 2014 um 13:36 Uhr

  • ja bitte , form.data[el] = $('#'+el).val(); diese aussage braucht eigentlich karten via name attr. schließe die Frage trotzdem mit Selbstantwort.

    – Traumweiber

    28. Januar 2014 um 13:41 Uhr


Ich habe es herausgefunden.

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

  • Das hat bei mir auch funktioniert, ich würde mich freuen, wenn mir das jemand erklären könnte warum obwohl.

    – J. Sargent

    9. März 2016 um 2:25 Uhr

  • Gemäß W3C-Empfehlungen kann ein HTML-For nur dann Daten senden, wenn das Eingabefeld einen Steuerelementnamen hat. Ausweise zählen nicht. https://www.w3.org/TR/html401/interact/forms.html#successful-controls

    – Peitsche

    11. Dezember 2016 um 6:36 Uhr


Benutzer-Avatar
Richard Bradley Smith

“Entsprechend W3C Empfehlungen, ein HTML für kann nur Daten senden, wenn das Eingabefeld einen Steuerelementnamen hat. Ausweise zählen nicht.” Nun, das ist alles schön und gut (eigentlich unbezahlbar), aber jQuery .val() hätte man glauben können, das kann man gerne gebrauchen id= als Selektor, wenn Sie sich ansehen dieses Beispiel. Meine Tests haben gezeigt, dass man nicht nur haben muss id= und name= aber sie müssen gleich sein. Ich liebe dieses Zeug so sehr, wenn es funktioniert!

Nein, Sie müssen nicht sowohl das name- als auch das id-Attribut haben, damit val funktioniert. Ich hatte es getestet, mit nur id , .val() funktioniert gut

  • Möglicherweise hat sich das Verhalten von .val() in den letzten jQuery-Versionen geändert.

    – Nikolaus

    4. Mai 2018 um 9:10 Uhr

Danke @nick-dickinson-wilde für deinen Kommentar. Ich hatte das gleiche Problem. Ich wollte den Wert der folgenden Eingabe erhalten.

<input id="ipValue" class="form-control" type="text" value="@Model.IPValue" />

Ich war überrascht, dass Folgendes nicht funktionierte.

javascript var ipValue = $("#ipValue").val();

Ich habe nicht bemerkt, dass ich ein Element mit derselben ID hatte <div class="col-3" id="ipValue">

1105430cookie-checkjQuery .val() funktioniert nicht für Eingabefelder

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy