Was ist der Unterschied zwischen jQuery .val() und .attr(‘value’)?

Lesezeit: 2 Minuten

Was ist der Unterschied zwischen jQuery val und attrvalue
Der Programmiermönch

Ich denke, der Titel ist klar genug

  • jQuery .val() vs. .attr(“value”) : stackoverflow.com/questions/8312820/…

    – Adrien Be

    6. Juli 14 um 20:32 Uhr

Was ist der Unterschied zwischen jQuery val und attrvalue
Nick Craver

.val() funktioniert auf nützliche Weise mit allen Elementen des Eingabetyps, einschließlich <select>…auch in den Fällen von <select multiple>Kontrollkästchen und Optionsfelder (in denen .val() bekommt oder setzt ein Reihe ausgewählter Werte, nicht nur eine Zeichenfolge).

Im Grunde dienen sie aber unterschiedlichen Zwecken .attr('value') verhält sich in manchen Situationen genauso, wie bei Textfeldern. Die bevorzugte Methode ist .val() überall konsistentes Verhalten zu bekommen.


Nur zum Spaß, hier ist ein weniger bekanntes Beispiel für Checkboxen, die machen .val() praktisch:

<input name="mytest" type="checkbox" value="1">
<input name="mytest" type="checkbox" value="2">
<input name="mytest" type="checkbox" value="3">
<input name="mytest" type="checkbox" value="4">

Du kannst das:

$("input[name="mytest"]").val([1, 2, 3]);

….was die ersten 3 Kästchen ankreuzt. Hier können Sie es ausprobieren.

  • Danke für das weniger bekannte Beispiel.

    – ScottE

    29. Januar 11 um 13:49 Uhr

  • Gut geschrieben! Vielleicht möchten Sie eine kurze Erklärung zur browserübergreifenden Normalisierung hinzufügen, die jQuery mit Methoden wie dieser durchführt.

    – mekwand

    29. Januar 11 um 14:34 Uhr

  • Beachten Sie auch das .attr('value') liest den ursprünglichen Wert, nicht den aktuellen Zustand. Siehe auch.

    – XML

    9. Mai 13 um 12:03 Uhr

Auch .attr(‘value’) gibt den Wert zurück, der vor der Bearbeitung des Eingabefelds war. Und .val() gibt den aktuellen Wert zurück.

1643854867 128 Was ist der Unterschied zwischen jQuery val und attrvalue
Benutzer3624334

Um die Antwort von Actis zu ergänzen …

Auch .attr(‘value’) gibt den Wert zurück, der vor der Bearbeitung des Eingabefelds war. Und .val() gibt den aktuellen Wert zurück.

Bei der Arbeit mit einem Texteingabefeld funktionieren die Setter-Methoden von .attr() und .val() unterschiedlich.

.val('newval')

legt den Wert fest, den der Benutzer auf der Seite sieht, und aktualisiert den Wert, der von nachfolgenden .val()-Methodenaufrufen zurückgegeben wird. Das Attribut value= des Elements wird nicht festgelegt.

OTOH

.attr('value','newval')

setzt das Attribut value= für das Element. Wenn der Benutzer nichts eingegeben hat und .val(newval) nicht aufgerufen wurde, wird dadurch auch das Steuerelement visuell aktualisiert und der von .val() zurückgegebene Wert aktualisiert.

Sie können mit dem folgenden jsfiddle weiter untersuchen:

https://jsfiddle.net/jasonnet/vamLww2k/

Viel Glück.

  • Ja genau … das ist die richtige Antwort …

    – Vahid Momeny

    18. Januar um 6:52

.

749270cookie-checkWas ist der Unterschied zwischen jQuery .val() und .attr(‘value’)?

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

Privacy policy