Почему флажок остается установленным при перезагрузке страницы?



Я перезагрузить страницу, которая имеет следующий код:



<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" />
897   8  

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. форма.сброс () может выполнить эту работу (действует как кнопка сброса ввода).

или вместо f5 нажмите enter в адресной строке:)

это может быть связано с кэшированием браузера-очень полезно для статических веб-сайтов, которые не меняются слишком часто, очень плохо для динамических веб-приложений.
попробуйте использовать эти два мета-тега в головной части страницы. Второй мета-тег предназначен для старых браузеров (IE5), которые не распознают мета-тег "no-cache" и хотя разные дают один и тот же результат: каждый запрос отправляется на сервер.

<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Expires" CONTENT="-1">

$("#showimage").prop ("проверено", false);

общественная идея решить это

сделать форму и кнопку сброса

<form>
<checkbox>
<reset>
</form>

$(reset).trigger("click");//to clear the cache and input 
$(checkbox).trigger("click");//to mark checkbox

Comments

    Ничего не найдено.