为什么重新加载页面时checkbox会保持被选中状态?

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

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

即使HTML保持发送到浏览器对于每次页面重新载入都是相同的,当执行重新载入时,checkbox总是取得选中的值。 换句话说,如果用户选中checkbox并重新加载,checkbox仍然被选中。

这里有caching吗?

编辑 :我尝试了下面的戈登贝尔的解决scheme,并发现,即使删除值=“1”,这仍然发生。 还有什么我可能会失踪?

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

是的,我相信这是caching。 我在Firefox上看到这种行为(不是Safari,为什么值得:))。

您可以使用CTRLSHIFTR重新加载页面并跳过caching(在Firefox上),您将看到检查值不会携带(但是正常的CTRLR会从caching中获取信息)

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

 Cache-Control: no-store 

这似乎禁用了Firefox的“记忆表单值”function

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

用js设置autocomplete =“off”也运行良好。

例如使用jQuery的:

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

这是Firefox的一个很好的function:如果你input一些东西,但重新加载页面,文本仍然在文本区域。 同样你select的其他设置。

唉,它不工作在SO(可能由JS重置)和dumber浏览器像IE …

这提出了一个解决scheme:如果你真的需要这样做,重置窗体与JS。 form.reset()可能会做这个工作(就像重置inputbutton一样)。

或者,而不是f5按地址栏上input:)

这可能是由于浏览器caching – 对于不经常更改的静态网站非常有用,对于dynamicWeb应用程序非常不利。
试试页面头部的这两个meta标签。 第二个元标记适用于不识别“无caching”元标记的旧版浏览器(IE5),虽然不同,但会产生相同的结果:每个请求都发送到服务器。

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

$( “#showimage”)丙( “选中”,假);

公众的想法来解决这个问题

使表单&重置button

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