Почему флажок установлен при перезагрузке страницы?
Я перезагружаю веб-страницу со следующим кодом:
<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();
Это просто сбрасывает форму к параметрам по умолчанию каждый раз, когда страница загружается. Не идеально, так как вы теряете гранулярный контроль, но это единственное, что решило это для меня.