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

Я перезагружаю веб-страницу со следующим кодом:

<label for="showimage">Show Image</label>
<input id="showimage" name="showimage" type="checkbox" value="1" />

Несмотря на то, что HTML остается в браузере одинаковым для каждой перезагрузки страницы, флажок всегда принимает проверенное значение при выполнении перезагрузки. Другими словами, если пользователь проверяет флажок и перезагружается, флажок по-прежнему проверяется.

Происходит ли здесь кеширование?

Изменить. Я попробовал решение Gordon Bell ниже и обнаружил, что это все еще происходит даже после удаления значения = "1". Что-нибудь еще, что я могу пропустить?

<label for="showimage">Show Image</label> 
<input id="showimage" name="showimage" type="checkbox" /> 

Ответ 1

Да, я считаю, что это кеширование. Я вижу это поведение в Firefox, например (не Safari, для чего это стоит:)).

вы можете перезагрузить страницу и обойти кеш (в Firefox) с помощью CTRL - SHIFT - R, и вы увидите, что значение проверки не переносится (нормальный CTRL - R будет захватывать информацию из кеша, однако)

edit. Я смог отключить эту серверную часть в Firefox, установив заголовок управления кэшем:

Cache-Control: no-store

это, кажется, отключает функцию "запомнить значения формы" Firefox

Ответ 2

Добавьте autocomplete="off" в элемент формы на странице. Недостатком является то, что это недопустимый XHTML, но он исправляет проблему без какого-либо свернутого javascript.

Ответ 3

set autocomplete = "off" с js также хорошо работает.

например, с помощью jquery:

$(":checkbox").attr("autocomplete", "off");

Ответ 4

Это хорошая функция Firefox: если вы набираете что-то, но перезагружаете страницу, текст остается в текстовой области. То же самое для других настроек, которые вы выбрали.

Увы, он не работает в SO (возможно, reset by JS) и тупик браузеров, таких как IE...

Что предлагает решение: если вам действительно нужно это сделать, reset форму с JS. form.reset() может выполнять задание (действует как кнопка ввода reset).

Ответ 5

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

Ответ 6

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

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

Ответ 7

$( "# ShowImage" ) проп ( "проверено", ложь);.

Ответ 8

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

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

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

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

Ответ 9

Это старый вопрос, но все еще активная проблема для Firefox. Ни один из ответов, которые я пытался решить, не решил, но то, что решило это для меня, было просто так:

    document.getElementById('formId').reset();

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