我正在重新加载包含以下代码的网页:
<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" />
答案 0 :(得分:136)
将autocomplete="off"
添加到页面上的表单元素中。缺点是这不是有效的XHTML,但它解决了这个问题,没有任何复杂的JavaScript。
答案 1 :(得分:33)
是的,我相信这是缓存。我在Firefox上看到了这种行为(不是Safari,因为它值得:))。
你可以使用 CTRL - SHIFT - R 重新加载页面并绕过缓存(在Firefox上),你会看到检查值不携带(正常 CTRL - R 会从缓存中获取信息)
编辑:我可以在Firefox上禁用此服务器端,设置缓存控制标头:
Cache-Control: no-store
这似乎禁用了Firefox的“记住表单值”功能
答案 2 :(得分:29)
使用js设置autocomplete =“off”也运行良好。
例如使用jquery:
$(":checkbox").attr("autocomplete", "off");
答案 3 :(得分:1)
这是Firefox的一个很好的功能:如果您键入内容但重新加载页面,文本仍保留在文本区域中。同意您选择的其他设置。
唉,它在SO中可能不起作用(可能由JS重置)和像IE这样的数字浏览器......
建议解决方案:如果您确实需要这样做,请使用JS重置表单。 form.reset()可能会完成这项工作(就像重置输入按钮一样)。
答案 4 :(得分:0)
或代替f5按地址栏上的输入:)
答案 5 :(得分:0)
这可能是由于浏览器缓存 - 对于不经常更改的静态网站非常有用,对于动态Web应用程序来说非常糟糕。
在页面的head部分尝试使用这两个元标记。第二个元标记适用于不识别“no-cache”元标记的旧浏览器(IE5),虽然不同产生相同的结果:每个请求都会发送到服务器。
<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Expires" CONTENT="-1">
答案 6 :(得分:0)
$( “#showimage”)丙( “选中”,假);
答案 7 :(得分:0)
解决这个问题的公众想法
制作表格&amp;重置按钮
<form>
<checkbox>
<reset>
</form>
$(reset).trigger("click");//to clear the cache and input
$(checkbox).trigger("click");//to mark checkbox
答案 8 :(得分:0)
这是一个古老的问题,但对于Firefox仍然是一个活跃的问题。我尝试过的所有答复都没有解决它,但是 did 为我解决的只是这个问题:
document.getElementById('formId').reset();
这只是在每次页面加载时将表单重置为默认选项。由于您失去了精细的控制,因此这不是理想的选择,但这是为我解决此问题的唯一方法。