it-swarm.com.de

Warum bleibt das Kontrollkästchen aktiviert, wenn die Seite neu geladen wird?

Ich lade eine Webseite neu, die folgenden Code enthält:

<label for="showimage">Show Image</label>
<input id="showimage" name="showimage" type="checkbox" value="1" />

Auch wenn die HTML-Stände, die an den Browser gesendet werden, für jedes Neuladen der Seite gleich sind, nimmt das Kontrollkästchen immer den aktivierten Wert an, wenn ein Neuladen durchgeführt wurde. Wenn der Benutzer also das Kontrollkästchen aktiviert und neu lädt, ist das Kontrollkästchen weiterhin aktiviert.

Gibt es hier ein Zwischenspeichern? 

Edit : Ich habe die Lösung von Gordon Bell unten ausprobiert und finde, dass dies auch nach dem Entfernen des Werts = "1" noch geschieht. Was fehlt mir sonst noch?

<label for="showimage">Show Image</label> 
<input id="showimage" name="showimage" type="checkbox" /> 
67
Readonly

Ja, ich glaube es ist Caching. Ich sehe dieses Verhalten zum Beispiel in Firefox (nicht in Safari, für was es sich lohnt :)).

sie können die Seite neu laden und den Cache (in Firefox) mit umgehen CTRL-SHIFT-R und Sie werden sehen, dass der Prüfwert nicht trägt (ein normaler Wert) CTRL-R holt sich die Infos aber aus dem Cache)

edit: Ich konnte diese Serverseite in Firefox deaktivieren und einen Cache Control Header setzen:

Cache-Control: no-store

dies scheint die Funktion "Formularwerte speichern" von Firefox zu deaktivieren

34
Owen

Fügen Sie autocomplete="off" in das Formularelement auf der Seite ein. Der Nachteil ist, dass dies kein gültiges XHTML ist, aber es behebt das Problem ohne umständliches Javascript.

133
ironbirdman

set autocomplete = "off" mit js funktioniert auch gut.

zum Beispiel mit jquery:

$(":checkbox").attr("autocomplete", "off");
29
RainChen

Es ist eine schöne Funktion von Firefox: Wenn Sie etwas eingeben und die Seite neu laden, verbleibt der Text im Textbereich. Wie für andere Einstellungen, die Sie ausgewählt haben.

Leider funktioniert es nicht in SO (wahrscheinlich von JS zurückgesetzt) ​​und dummen Browser wie IE ...

Was eine Lösung vorschlägt: Wenn Sie das wirklich tun müssen, setzen Sie das Formular mit JS zurück. Möglicherweise erledigt form.reset () die Aufgabe (verhält sich wie die Eingabeschaltfläche "Reset").

1
PhiLho

$ ("# showimage"). prop ("checked", false);

0
Sumit Mehta

Dies ist eine alte Frage, aber immer noch ein aktives Problem für Firefox. Keine der Antworten, die ich ausprobierte, löste es, aber was tat löste es für mich einfach so:

    document.getElementById('formId').reset();

Dadurch wird das Formular bei jedem Laden der Seite einfach auf die Standardoptionen zurückgesetzt. Nicht ideal, da Sie die granulare Kontrolle verlieren, aber es ist das einzige, was dies für mich gelöst hat.

0
cmshnrblu

Dies kann auf ein Browser-Caching zurückzuführen sein - sehr nützlich für statische Websites, die nicht allzu oft geändert werden, sehr schlecht für dynamische Webanwendungen .
Versuchen Sie es mit diesen beiden Meta-Tags im Kopfbereich der Seite. Das zweite Meta-Tag ist für ältere Browser (IE5) gedacht, die das "No-Cache" -Metag nicht erkennen und obwohl anders, dasselbe Ergebnis liefert: Jede Anfrage geht an den Server.

<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Expires" CONTENT="-1">
0
Aleksandar

die öffentliche Idee, das zu lösen 

formular erstellen & Reset-Taste 

<form>
<checkbox>
<reset>
</form>

$(reset).trigger("click");//to clear the cache and input 
$(checkbox).trigger("click");//to mark checkbox
0
Mohamed Gomah

oder anstelle von f5 drücken Sie die Eingabetaste in der Adressleiste :)

0
Ionuț Staicu