85

我正在重新加载具有以下代码的网页:

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

即使每次重新加载页面时发送到浏览器的 HTML 都是相同的,但在执行重新加载时,复选框始终采用选中的值。换句话说,如果用户选中复选框并重新加载,复选框仍然处于选中状态。

这里有一些缓存吗?

编辑:我在下面尝试了 Gordon Bell 的解决方案,发现即使在删除 value="1" 后这种情况仍然存在。还有什么我可能会丢失的吗?

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

9 回答 9

177

添加autocomplete="off"到页面上的表单元素中。缺点是这不是有效的 XHTML,但它在没有任何复杂的 javascript 的情况下解决了这个问题。

于 2009-01-22T22:39:08.703 回答
38

是的,我相信它正在缓存。例如,我在 Firefox 上看到了这种行为(不是 Safari,这是值得的 :))。

CTRL您可以使用-重新加载页面并绕过缓存(在 Firefox 上)SHIFTR您会看到检查值不携带(正常CTRL-R但是会从缓存中获取信息)

编辑:我能够在 Firefox 上禁用此服务器端,设置缓存控制标头:

Cache-Control: no-store

这似乎禁用了 Firefox 的“记住表单值”功能

于 2008-11-18T19:28:55.860 回答
34

使用 js 设置 autocomplete="off" 也运行良好。

例如使用 jquery:

$(":checkbox").attr("autocomplete", "off");
于 2009-07-14T04:03:51.177 回答
2

这是一个老问题,但对于 Firefox 来说仍然是一个活跃的问题。我尝试过的所有回复都没有解决它,但为我解决的只是这个:

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

这只是在每次页面加载时将表单重置为默认选项。不理想,因为您失去了精细控制,但它是唯一为我解决这个问题的方法。

于 2019-06-25T18:12:18.493 回答
1

这是 Firefox 的一个不错的功能:如果您键入内容但重新加载页面,文本仍会保留在文本区域中。您选择的其他设置同上。

唉,它在 SO(可能由 JS 重置)和 IE 等更笨的浏览器中不起作用......

这提出了一个解决方案:如果您确实需要这样做,请使用 JS 重置表单。form.reset() 可能会完成这项工作(就像重置输入按钮一样)。

于 2008-11-18T21:04:41.640 回答
0

或者代替 f5 在地址栏上按 enter :)

于 2008-11-19T12:47:19.337 回答
0

这可能是由于浏览器缓存 - 对于不经常更改的静态网站非常有用,对于动态 Web 应用程序非常不利。
尝试在页面的 head 部分使用这两个元标记。第二个元标记适用于不识别“无缓存”元标记的旧浏览器 (IE5),尽管不同会产生相同的结果:每个请求都发送到服务器。

<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Expires" CONTENT="-1">
于 2008-11-19T13:54:25.300 回答
0

$("#showimage").prop("checked",false);

于 2017-05-15T07:25:18.337 回答
0

解决这个问题的公众想法

制作表格和重置按钮

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

$(reset).trigger("click");//to clear the cache and input 
$(checkbox).trigger("click");//to mark checkbox
于 2017-09-06T20:59:14.960 回答