Заставить IE «забыть» информацию, введенную в форму при использовании кнопки «Назад» - PullRequest
2 голосов
/ 06 января 2011

У меня есть страница с формой, где многие поля заполнены переменными, переданными в URL. Эти поля отключены (недоступны для редактирования) и доступны только для просмотра пользователем.

Остальные поля требуют ввода пользователем и НЕ отключены (РЕДАКТИРУЕМЫЕ). Когда форма отправлена, появляется страница подтверждения. Может случиться так, что пользователю необходимо отправить несколько из этих форм, где НЕИЗМЕНИМАЯ информация одинакова для каждой формы, поэтому возможность вернуться на страницу формы со страницы подтверждения сэкономит много времени.

Я хочу, чтобы это работало, когда пользователь нажимает кнопку «Назад», все поля НЕИЗМЕНИМОГО заполняются, но поля РЕДАКТИРУЕМЫЕ пустые. Это то, что делает Firefox, но IE8 не «забывает», что было введено в поля EDITABLE.

Чтобы отключить кэш, в начале моей страницы И в конце моей страницы отображается следующее.

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

Что еще я должен сделать, чтобы IE забыл, что было введено в поля EDITABLE при нажатии кнопки назад?

Все мои страницы генерируются с помощью PHP, если это имеет значение.

EDIT:

Мне кажется, что это проблема кэширования моей страницы в IE, хотя я сказал, что нет. Верны ли мои meta теги? Нужно ли делать что-то еще, чтобы IE не кэшировал мою страницу?

Ответы [ 3 ]

2 голосов
/ 06 января 2011

Вы пытались добавить атрибут autocomplete='off' в поля формы?

например, что-то вроде этого:

<input type='text' name='myfield' size='10' autocomplete='off'>
1 голос
/ 06 января 2011

Я нашел этот фрагмент кода, и он, кажется, делает то, что я хочу.

    <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>   

ОБНОВЛЕНИЕ:

Приведенное выше решение работает в IE, но я нашелэто не сработало прямо в Firefox.Изучая ситуацию дальше, я наконец-то понял свои проблемы с некоторой SO-помощью.Ниже приведено лучшее решение, поместите его над заголовком DOCTYPE.Подробнее здесь .

<?php
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
?>
0 голосов
/ 06 января 2011

Почему бы просто не сделать перенаправление назад на форму вместо того, чтобы заставить их нажимать кнопку "Назад" (есть ссылка "Enter More", ведущая к форме)?

Таким образом, когда страница загружаетсявы можете использовать для ввода по умолчанию пустое значение

пример

<input type="textbox" name="somename" value="">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...