Die meisten Browser zwischenspeichern Formulareingabewerte. Wenn der Benutzer eine Seite aktualisiert, haben die Eingaben dieselben Werte.
Hier ist mein Problem. Wenn ein Benutzer auf Speichern klickt , überprüft der Server POST-Daten (z. B. geprüfte Produkte) und sendet sie an den Browser zurück, falls sie nicht gültig sind. Wie oben erwähnt, können sie jedoch aufgrund des Browser-Cache ausgewählt werden, auch wenn der Server die Auswahl für einige Werte aufhebt!
Meine Daten haben unsichtbare Kontrollkästchen (bis das übergeordnete Element ausgewählt ist), sodass der Benutzer möglicherweise nicht weiß, dass ein vorheriger Wert noch ausgewählt ist, bis er erneut auf Speichern klickt und eine Fehlermeldung erhält - obwohl der Benutzer der Meinung ist, dass dies nicht der Fall ist . Welches ist irritierend.
Dies kann durch Ctrl+ gelöst werden F5, aber es ist nicht einmal eine Lösung. Gibt es eine automatische / programmatische Möglichkeit, den Browser anzuweisen, Formulareingabedaten auf einem Formular / einer Seite nicht zwischenzuspeichern?
quelle
<form autocomplete="off"...
eine Option für Sie? Tritt dieses Problem in allen Browsern auf oder nur in einem bestimmten?<select>
Listen zu beantworten ? Ich habe eine Liste und habe eineselected
Auswahl definiert, aber beim Aktualisieren der Seite bleiben die zuvor ausgewählten Optionen erhalten.Antworten:
Setzen Sie die Werte explizit als leer? Beispielsweise:
Das sollte verhindern, dass Browser Daten dort ablegen, wo sie nicht sein sollten. Alternativ können Sie das
autocomplete
Attribut dem Formular-Tag hinzufügen :quelle
checked="false"
, dass dies in einigen Browsern funktioniert. Eine andere Alternative ist die Verwendung von Javascript / jQuery, um alle Kontrollkästchen beim Laden der Seite explizit zu deaktivieren.Aus einer Stapelüberlaufreferenz
Es hat nicht mit value = "" funktioniert, wenn der Browser den Wert bereits speichert und Sie ihn hinzufügen sollten.
Für ein Eingabe-Tag gibt es das Attribut Autocomplete, das Sie festlegen können:
Sie können die automatische Vervollständigung auch für ein Formular verwenden.
quelle
autocomplete="off"
es keine Auswirkung zu haben, wenn es für einzelne Formularelemente verwendet wird - selbst wenn dasvalue
Attribut explizit leer gesetzt ist, und beim Senden einesCache-Control: Must-Revalidate
Headers hatte dies keine Auswirkung. Ich musste dasautocomplete="off"
Attribut auf das<form>
Element selbst anwenden , um dieses Verhalten in Chrome zu unterdrücken.Ein anderer Ansatz wäre, das Formular mit JavaScript direkt nach dem Formular im HTML zurückzusetzen:
quelle
Grundsätzlich gibt es zwei Möglichkeiten, den Cache zu leeren:
oder
quelle
Dies funktionierte bei mir in neueren Browsern:
quelle