Warum setzt die Schaltfläche zum Zurücksetzen von HTML-Formularen versteckte Felder nicht zurück?

8

Ich habe etwas Überraschendes entdeckt:

%Vor%

Wenn Sie dies in Firefox 4.0.1 versuchen, wird durch Klicken auf "Löschen" die Texteingabe immer auf 5 zurückgesetzt, aber setzt das verborgene Feld nie zurück .

Ich (und andere) haben dieses Verhalten überhaupt nicht erwartet: Wir haben erwartet, dass auch der versteckte Wert zurückgesetzt wird!

Kann jemand auf Dokumentation oder Spezifikationen verweisen, die erklären, warum die verborgene Eingabe durch die Reset-Schaltfläche anders behandelt wird?

Erklärungen, warum solch ein Verhalten wünschenswert ist, sind ebenfalls willkommen.

    
trutheality 16.06.2011, 06:12
quelle

3 Antworten

14

FWIW, ich denke, ich kann die ganze Geschichte aus den Antworten und Kommentaren zusammenstellen.

Verwendungszweck: Die Schaltfläche "Löschen" dient zum Löschen von Benutzereingaben. Da versteckte Eingaben dem Benutzer nicht direkt zugänglich sind, ist es nicht sinnvoll, dem Benutzer das Zurücksetzen der verborgenen Eingaben zu erlauben Wert.

Dokumentation und Verhalten: Der Fehlerbericht , auf den AR hingewiesen hat, ist explizit, was passiert: Die% des versteckten Feldes Der Modus von co_de% ist Standard , wie in < a href="http://www.w3.org/TR/html5/forms.html#hidden-state-%28type=hidden%29"> Spezifikationen .
Das bedeutet insbesondere, dass die Änderung des Werts (wie im Beispielcode in der Frage) den Standardwert ändert, und die Schaltfläche "Zurücksetzen" setzt Eingabefelder auf den Standardwert zurück, sodass keine Änderung erfolgt.
Das Verhalten für die Texteingabe ist unterschiedlich (auch wenn der Wert programmgesteuert geändert wird), da der Modus value nicht standardmäßig ist, sondern value , was bedeutet, dass zwischen dem Standardwert der Eingabe und dem aktuellen Wert unterschieden wird.

    
trutheality 23.06.2011, 04:17
quelle
6

Der Benutzer kann das verborgene Feld nicht sehen oder ändern, daher würde es keinen Sinn machen, es durch einen Knopfdruck löschen zu können.

    
William Lawn Stewart 16.06.2011 06:16
quelle
3

Wenn Sie auf Zurücksetzen klicken, geht der Browser und überprüft den Standardwert in der DOM-Struktur, nicht in der HTML-Seite.

Ihr Javascript ändert das DOM. Sie sollten versuchen, Ihre RESET-Schaltfläche durch eine benutzerdefinierte Schaltfläche zu ersetzen, die ein Javascript aufruft, das zwei Dinge tut:

  • normal zurückgesetzt.
  • setze das versteckte Feld auf 5 .
SteeveDroz 16.06.2011 06:45
quelle

Tags und Links