2011-01-06 15 views
2

Ich habe eine Seite mit einem Formular, wo viele der Felder von Variablen in der URL übergeben gefüllt sind. Diese Felder sind deaktiviert (nicht editierbar) und sind nur für den Benutzer sichtbar.IE "vergessen" Informationen in Formular eingegeben, wenn die Schaltfläche Zurück

Die restlichen Felder erfordern Benutzereingaben und sind NICHT deaktiviert (EDITABLE). Wenn das Formular gesendet wird, erscheint eine Bestätigungsseite. Es kann der Fall sein, dass der Benutzer mehrere dieser Formulare einreichen muss, wobei die NICHT EDITABLE Informationen von Formular zu Formular identisch sind, sodass es viel Zeit sparen würde, von der Bestätigungsseite zur Formularseite zurückzukehren.

Die Art, wie dies funktioniert, ist, wenn ein Benutzer die Zurück-Taste drückt, sind alle NON-EDITABLE-Felder ausgefüllt, aber die EDITABLE-Felder sind leer. Das macht Firefox, aber IE8 "vergisst" nicht, was in den EDITABLE-Feldern eingegeben wurde.

Um den Cache zu deaktivieren, erscheint das folgende am Anfang meiner Seite und am Ende meiner Seite.

<head> 
    <meta http-equiv="Pragma" content="no-cache"/> 
    <meta http-equiv="Cache-Control" content="no-store"/> 
<head/> 

Was muß ich tun, um IE vergessen, was in den editierbaren Feldern eingegeben wurde, wenn die Zurück-Taste gedrückt wird?

Alle meine Seiten werden mit PHP generiert, wenn das wichtig ist.

EDIT:

Es scheint mir, dass dies ein Problem von IE ist meine Seiten-Caching, obwohl ich es nicht gesagt. Sind meine meta Tags korrekt? Muss ich etwas anderes tun, um zu verhindern, dass der IE meine Seite zwischenspeichert?

Antwort

1

ich diesen Code-Schnipsel gefunden und es scheint zu tun, was ich will haben.

<input type="hidden" id="refreshed" value="no"/> 
    <script type="text/javascript"> 

     onload=function(){ 
      var e=document.getElementById("refreshed"); 
      if(e.value=="no"){ 
       e.value="yes"; 
      } 

      else{ 
       e.value="no"; 
       location.reload(); 
      } 

     } 

    </script> 

UPDATE:

Die obige Lösung in IE gearbeitet, aber ich fand es nicht richtig in Firefox nicht funktioniert. Die Situation weiter erforschend, habe ich schließlich meine Probleme mit etwas SO-Hilfe herausgefunden. Unten ist eine bessere Lösung, setzen Sie es über Ihre DOCTYPE Header. Mehr Details here.

<?php 
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 
?> 
2

Haben Sie versucht, das autocomplete='off'-Attribut zu Ihren Formularfeldern hinzuzufügen?

zB etwas wie folgt aus:

<input type='text' name='myfield' size='10' autocomplete='off'> 
+0

funktioniert nicht, und ich möchte nicht wirklich Autocomplete deaktivieren. Es scheint, dass IE immer noch die Seite zwischenspeichert, obwohl ich es nicht gesagt habe :( – ubiquibacon

0

Warum nicht einfach eine Umleitung auf die Form tun zurück, anstatt sie die Zurück-Taste getroffen (einen Link sagen: „Geben Sie Mehr“, das auf die Form zurückführt) ?

diese Weise, wenn die Seite geladen werden Sie Ihre Eingaben Standard auf einen leeren Wert

Beispiel

<input type="textbox" name="somename" value=""> 
+0

Ich werde das auch haben, aber ich muss erklären, dass der Benutzer den Zurück-Knopf drückt (obwohl ich es lieber nicht machen würde Der Zurück-Knopf, ich kann sie nicht stoppen). – ubiquibacon

+0

Eigentlich können Sie die Seite onbeforeunload Ereignis erfassen und den Benutzer fragen, ob sie mehr Daten eingeben möchten, wenn ja, ein window.location auf der Formularseite, wenn nicht beantwortet einfach zurück wahr; –

Verwandte Themen