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

Rea*_*nly 75 firefox

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

<label for="showimage">Show Image</label>
<input id="showimage" name="showimage" type="checkbox" value="1" />
Run Code Online (Sandbox Code Playgroud)

即使每次重新加载页面时发送到浏览器的HTML都是相同的,但在执行重新加载时,复选框始终采用检查的值.换句话说,如果用户选中复选框并重新加载,则仍会选中该复选框.

这里有缓存吗?

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

<label for="showimage">Show Image</label> 
<input id="showimage" name="showimage" type="checkbox" /> 
Run Code Online (Sandbox Code Playgroud)

小智 146

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

  • 从我正在阅读的内容(http://www.w3schools.com/html/html_form_attributes.asp)来看,它实际上在HTML5中有效.(在我阅读有关该主题的更多信息之前,我对之前的评论进行了评论.)因此,如果您使用的是HTML5,请在复选框上使用自动完成功能. (7认同)
  • 10多年后。这个答案让我很头疼! (4认同)

Owe*_*wen 35

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

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

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

Cache-Control: no-store
Run Code Online (Sandbox Code Playgroud)

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

  • 它从缓存中获取值,因此它是缓存.除非我误解了你想说的话. (2认同)
  • Firefox 的主动缓存是一个主要的 PITA,并且在针对它进行开发时总是会引起我的注意。我之前没有尝试过 Cache-Control 标头,但如果它有效,stackoverflow 就完全证明了我在这里花费的时间是合理的。 (2认同)

Rai*_*hen 30

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

例如使用jquery:

$(":checkbox").attr("autocomplete", "off");
Run Code Online (Sandbox Code Playgroud)

  • @ClainDsilva只是因为你_may_使用表单外的复选框并不意味着我说的任何不合逻辑.你可能会声称它并不完全全面(虽然它适用于大多数场景)但是说它不合逻辑是奇怪的,因为它有效. (2认同)