Сделать страницу, чтобы браузер не кэшировал / сохранял входные значения - PullRequest
107 голосов
/ 23 апреля 2010

Большинство входных значений формы кэша браузера.Поэтому, когда пользователь обновляет страницу, входные данные имеют одинаковые значения.

Вот моя проблема.Когда пользователь нажимает кнопку Сохранить, сервер проверяет данные POST (например, проверенные продукты) и, если они недействительны, отправляет их обратно в браузер.Однако, как указано выше, даже если сервер очищает выбор для некоторых значений, они все равно могут быть выбраны из-за кеша браузера!Мои данные имеют невидимые (до тех пор пока не выбран родительский элемент) флажки, поэтому пользователь может даже не знать, что какое-то предыдущее значение все еще выбрано, пока снова не нажмет «Сохранить» и не получит сообщение об ошибке - даже если пользователь считает, что это не так.Что раздражает.

Эту проблему можно решить, нажав Ctrl-F5, но это даже не решение.Существует ли автоматический / программный способ запретить браузеру кэшировать входные данные формы на какой-либо форме / странице?

Ответы [ 5 ]

180 голосов
/ 23 апреля 2010

Вы явно устанавливаете значения как пустые? Например:

<input type="text" name="textfield" value="">

Это должно помешать браузерам размещать данные там, где это не должно Кроме того, вы можете добавить атрибут autocomplete в тег формы:

<form autocomplete="off" ...></form>
40 голосов
/ 19 июня 2013

из ссылка на стек переполнения

он не работал со значением = "", если браузер уже сохранил значение, поэтому вы должны добавить

Для входного тега есть атрибут автозаполнения, который вы можете установить:

<input type="text" autocomplete="off" />

Вы также можете использовать автозаполнение для формы.

10 голосов
/ 08 декабря 2011

другим подходом будет сброс формы с использованием JavaScript сразу после формы в HTML.

<form id="myForm">
  <input type="text" value="" name="myTextInput" />
</form>
<script type="text/javascript">
  document.getElementById("myForm").reset();
</script>
6 голосов
/ 24 июля 2017

позднее добавление, но у меня это работало в новых браузерах:

autocomplete = "новый пароль"

5 голосов
/ 25 июля 2015

В основном, есть два способа очистки кэша:

<form autocomplete="off"></form> 

или

$('#Textfiledid').attr('autocomplete','off');

`

...