Большинство браузеров кешируют входные значения формы. Поэтому, когда пользователь обновляет страницу, входные данные имеют одинаковые значения.
Вот моя проблема. Когда пользователь нажимает кнопку « Сохранить» , сервер проверяет данные, отправленные POST (например, проверенные продукты), и, если они недействительны, отправляет их обратно в браузер. Однако, как указано выше, даже если сервер отменяет выбор для некоторых значений, они все равно могут быть выбраны из-за кеша браузера!
В моих данных есть невидимые (пока не выбран родительский элемент) флажки, поэтому пользователь может даже не знать, что какое-то предыдущее значение все еще выбрано, до тех пор, пока снова не нажмете « Сохранить» и не получит сообщение об ошибке, даже если пользователь думает, что это не так. Что раздражает.
Это можно решить, сделав Ctrl+ F5, но это даже не решение. Есть ли автоматический / программный способ указать браузеру не кэшировать входные данные формы на какой-либо форме / странице?
источник
<form autocomplete="off"...
вариант для вас? Эта проблема возникает во всех браузерах или только в одном?<select>
списков. У меня есть список, и я определилselected
выбор, но при обновлении страницы сохраняются предыдущие выбранные параметры.Ответы:
Вы явно устанавливаете значения как пустые? Например:
Это должно помешать браузерам помещать данные туда, где они не должны. В качестве альтернативы вы можете добавить
autocomplete
атрибут в тег формы:источник
checked="false"
, это может работать в некоторых браузерах. Другой альтернативой является использование Javascript / jQuery для явного снятия всех флажков при загрузке страницы.Из ссылки на переполнение стека
Он не работал со значением = "", если браузер уже сохраняет значение, поэтому вам следует добавить.
Для тега input вы можете установить атрибут autocomplete:
Вы также можете использовать автозаполнение для формы.
источник
autocomplete="off"
неэффективным при использовании для отдельных элементов формы - даже еслиvalue
атрибут явно установлен пустым, и при отправкеCache-Control: Must-Revalidate
заголовка это не имело никакого эффекта. Мне пришлось применитьautocomplete="off"
атрибут к<form>
самому элементу, чтобы подавить такое поведение в Chrome.Другой подход - сбросить форму с помощью JavaScript сразу после формы в HTML:
источник
По сути, есть два способа очистить кеш:
или
источник
Это сработало для меня в новых браузерах:
источник