Warum muss die checkbox bleiben aktiviert, wenn die Seite neu zu laden?
Ich bin laden einer web-Seite mit dem folgenden code:
<label for="showimage">Show Image</label>
<input id="showimage" name="showimage" type="checkbox" value="1" />
Obwohl die HTML-Aufenthalte an den browser gesendet wird, die gleiche für jeden neu laden der Seite die checkbox nimmt immer der gecheckte Wert, wenn ein reload ausgeführt wurde. In anderen Worten, wenn der Benutzer überprüft die checkbox und liest, ist das Kontrollkästchen noch aktiviert ist.
Gibt es einige caching hier Los?
Bearbeiten: ich habe versucht, Gordon Bell ' s Lösung weiter unten und finden, dass dies immer noch geschieht, auch nach dem entfernen der value="1". Alles, was ich möglicherweise fehlen?
<label for="showimage">Show Image</label>
<input id="showimage" name="showimage" type="checkbox" />
InformationsquelleAutor Readonly | 2008-11-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, ich glaube, es ist das caching. Ich sehe dieses Verhalten bei Firefox zum Beispiel (nicht Safari, für was das Wert ist 🙂 ).
können Sie die Seite neu laden ohne den cache (bei Firefox) mit STRG-SHIFT-R und du wirst sehen, das schauen Wert nicht tragen (eine normale STRG-R wird greifen die info aus dem cache jedoch)
Bearbeiten: ich war in der Lage, deaktivieren Sie diese server-Seite von Firefox, die Einstellung der cache-control-header:
scheint dies zu deaktivieren Sie die "remember-Formular-Werte" - Funktion von Firefox
ich denke nicht so (zumindest nicht von der server-Seite). firefox ist wirklich aggressiven caching-Sachen. ich habe nur in der Lage gewesen, um es zu stoppen caching zuverlässig in Situationen wie dieser von der client-Seite
Sie schnappen Werte vom cache, so ist es Zwischenspeichern. es sei denn, ich habe falsch verstanden, was du zu sagen versuchst.
Firefox aggressive caching ist eine große PITA und ist immer Fang mich, wenn die Entwicklung gegen. Ich habe nicht versucht, den Cache-Control-header vor, aber wenn es funktioniert stackoverflow nur gerechtfertigt, die Zeit, die ich hier vollständig.
Die Werte kommen nicht aus dem "cache" im Firefox die heruntergeladene Datei zu speichern. zB: Wenn Sie navigieren Weg und dann Folgen Sie den gleichen URL, die Seite wird zwischengespeichert, aber die Werte werden nicht. Durch das brechen des cache können Sie nicht zwingen, einen hard-reload, aber es ist nur ein Zufall, dass dieser auch deaktiviert die Funktion.
InformationsquelleAutor Owen
Hinzufügen
autocomplete="off"
in das form-element auf der Seite. Der Nachteil ist, dass dies nicht valides XHTML, aber es behebt das Problem ohne irgendwelche gewundenen javascript.Von dem, was ich bin Lesen, ist eigentlich Valide in HTML5. (Ich von Ihnen positiv bewertet werden vorherigen Kommentar, bevor ich mehr über das Thema.) So verwenden Sie AutoVervollständigen-off zu Inhalt Ihres Herzens auf die Checkboxen, wenn Sie mit HTML5.
InformationsquelleAutor
set autocomplete="off" mit js arbeitet auch gut.
zum Beispiel mit jquery:
Ich fand, dass Sie gebraucht
$("#formId").attr("autocomplete", "off")
wo#formId
ist die id des Formulars.es gibt viele Gelegenheiten, wo wir verwenden eine check-box, ohne eine form daher seine unlogischen anwenden ("#formId").attr("autocomplete", "off")
Nur weil man kann verwenden Sie ein Kontrollkästchen außerhalb einer form bedeutet nicht, dass alles, was ich sagte, ist unlogisch. Man könnte behaupten, es ist nicht völlig umfassend (obwohl es funktioniert für die meisten Szenarien), aber zu sagen, dass es nicht logisch ist Bizarr, es funktioniert.
wenn wir anwenden können, auto-vervollständigen deaktivieren auf das Kontrollkästchen allein, es funktioniert gut auf diese Weise, ich bin damit einverstanden, dass Ihre Lösung funktioniert, aber es gilt auch auf alle element innerhalb der form-box. Dass jedoch möglicherweise nicht das beabsichtigte Verhalten. Die Frage wurde verengt, um Kontrollkästchen allein und nicht das gesamte Formular. Bei allem Respekt, ich will einfach nur die beste Lösung zu finden-zugeschnitten auf die Frage. Zu diesem Kontext anwenden autocomplete off für das gesamte Formular ist nicht richtig.
InformationsquelleAutor RainChen
Es ist ein nettes feature von Firefox: wenn Sie geben etwas, aber die Seite neu laden, verbleibt der text im text-Bereich. Idem für andere Einstellungen, die Sie gewählt haben.
Leider funktioniert es nicht SO (vermutlich reset per JS) und dümmer-Browsern wie IE...
Die eine Lösung vorschlagen: wenn Sie wirklich tun müssen, setzen Sie die form mit JS. form.reset() könnte den job machen (wirkt wie der Eingang Reset-Taste).
Was ist hacky - / übertrieben, und warum siehst du es als solches? Sehen Sie etwas einfacher?
Was ist, wenn Sie nur wollen, dass die form parially zurücksetzen? Ich, persönlich, nur möchten, deaktivieren Sie die Eingangs-cache für Checkboxen, die aber nicht bei Textfeldern. Ich Stimme Ihnen vollkommen zu, dass dies ein gutes feature von firefox, aber nicht für benutzerdefinierte zwei-Staaten-Tasten, die im Grunde neu gestaltete Checkboxen. Eine andere Sache ist, warum verwenden javascript, wo man einfach eine html-Eigenschaft, um dieses Verhalten zu verhindern? Und ja, ich weiß, "autocomplete=off" lässt den html-code ungültig ist, aber die Seite funktioniert immer noch.
"es ist ein nettes feature von Firefox": klicken Sie auf das filtern von Kontrollkästchen auf eine suchergebnis-Seite und dann neu laden, das aktiviert die Filter keinen Sinn machen, mit dem dataset angezeigt. -ich sage, dies ist eine große PITA, wie zuvor angegeben.
Ich würde nicht immer nennen dies ein nettes feature... ja, es hilft, wenn du schreibst viel text und dann müssen die Seite aktualisieren, aber wenn Sie die Entwicklung einer Benutzeroberfläche, die es " weit von ein nettes feature.
InformationsquelleAutor PhiLho
oder statt der f5-drücken Sie die EINGABETASTE auf Adressleiste 🙂
Wir können nicht wirklich erwarten, dass die Benutzer immer die Seite aktualisieren mit Strg+Umschalt+R, oder etwa nicht?
InformationsquelleAutor Ionuț Staicu
Könnte es durch ein browser-caching - sehr nützlich für statische web-sites, die nicht geändert zu oft, sehr schlecht für dynamische web-Anwendungen.
Versuchen Sie es mit diesen beiden meta-tags in den head-Abschnitt der Seite. Zweite meta-tag ist für ältere Browser (IE5) , sind Sie nicht zu erkennen, "no-cache" meta-tag, und obwohl anders erzeugt das gleiche Ergebnis: Jede Anfrage geht an den server.
Seine Antwort war in 2008, @MészárosLajos Kommentar war im Jahr 2014. Damals, ja, das war egal.
InformationsquelleAutor Aleksandar
$("#im Bildbetrachter").prop("checked",false);
InformationsquelleAutor Sumit Mehta
den öffentlichen Vorstellung zu lösen, dass
machen form & reset-Taste
InformationsquelleAutor Mohamed Gomah