为什么重新加载页面时复选框保持不变?

时间:2008-11-18 19:16:47

标签: firefox

我正在重新加载包含以下代码的网页:

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

9 个答案:

答案 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();

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