Почему флажок остается установленным при перезагрузке страницы?
Я перезагрузить страницу, которая имеет следующий код:
<label for="showimage">Show Image</label>
<input id="showimage" name="showimage" type="checkbox" value="1" />
несмотря на то, что HTML остается отправленным в браузер одинаково для каждой перезагрузки страницы, флажок всегда принимает проверенное значение при выполнении перезагрузки. Другими словами, если пользователь проверяет флажок и перезагружает, флажок все еще установлен.
здесь происходит какое-то кэширование?
Edit: я попробовал решение Гордона Белла ниже и нашел, что это все еще происходит даже после удаления значения="1". Что-нибудь еще я могу упустить?
<label for="showimage">Show Image</label>
<input id="showimage" name="showimage" type="checkbox" />
8 ответов:
Да, я считаю, что это кэширование. Я вижу это поведение на Firefox, например (не Safari, для чего это стоит :) ).
вы можете перезагрузить страницу и обойти кэш (в Firefox) с помощью CTRL -SHIFT -R и вы увидите, что значение проверки не несет (нормальный CTRL -R однако захватить информацию из кэша)
edit: я смог отключить эту сторону сервера на Firefox, установка заголовка элемента управления кэшем:
Cache-Control: no-storeэто, кажется, отключить функцию "запомнить значения формы" Firefox
добавить
autocomplete="off"в элемент формы на странице. Недостатком является то, что это не является допустимым XHTML, но он устраняет проблему без каких-либо запутанных javascript.
set autocomplete= " off " с js также работает хорошо.
например, с помощью jquery:
$(":checkbox").attr("autocomplete", "off");
Это хорошая особенность Firefox: если вы набираете что-то, но перезагружаете страницу, текст остается в текстовой области. Idem для других настроек, которые вы выбрали.
увы, он не работает в SO (вероятно, сброшен JS) и более тупых браузерах, таких как IE...
которые предлагают решение: если вам действительно нужно это сделать, сбросьте форму с помощью JS. форма.сброс () может выполнить эту работу (действует как кнопка сброса ввода).
это может быть связано с кэшированием браузера-очень полезно для статических веб-сайтов, которые не меняются слишком часто, очень плохо для динамических веб-приложений.
попробуйте использовать эти два мета-тега в головной части страницы. Второй мета-тег предназначен для старых браузеров (IE5), которые не распознают мета-тег "no-cache" и хотя разные дают один и тот же результат: каждый запрос отправляется на сервер.<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Expires" CONTENT="-1">
общественная идея решить это
сделать форму и кнопку сброса
<form> <checkbox> <reset> </form> $(reset).trigger("click");//to clear the cache and input $(checkbox).trigger("click");//to mark checkbox
Comments