制作页面以告知浏览器不要缓存/保留输入值


116

大多数浏览器都会缓存表单输入值。因此,当用户刷新页面时,输入具有相同的值。

这是我的问题。用户单击“ 保存”时,服务器将验证POST数据(例如,检查的产品),如果无效,则将其发送回浏览器。但是,如上所述,即使服务器清除了某些值的选择,由于浏览器缓存的原因,它们仍可能被选中!

我的数据具有不可见的(直到父项被选中)复选框,因此用户甚至可能不知道以前的某个值仍处于选中状态,直到再次单击“ 保存”并收到错误消息-即使用户认为没有。这很烦人。

可以通过Ctrl+ 来解决F5,但这甚至不是解决方案。是否有一种自动/编程方式来告诉浏览器不要在某些表单/页面上缓存表单输入数据?


1
<form autocomplete="off"...你的选择吗?这个问题是否出现在所有浏览器中,或者只出现在一个浏览器中?
大卫·科拉

有没有一种方法可以参考下拉<select>列表来回答这个问题。我有一个列表并定义了一个selected选项,但是刷新页面会保留以前选择的选项。
马丁

我想实现相反的效果-将每个页面的输入值保留在“后退”按钮上(单击“后退两次,相应地获取输入”)。有很多使用大量JS代码的示例(恕我直言实际上不起作用),但是-有没有更简单的方法?我在表单和输入字段上都尝试了autocomplete =“ on”-不起作用。浏览器是Chrome。
德米特里z

Answers:


197

您是否将这些值明确设置为空白?例如:

<input type="text" name="textfield" value="">

那应该停止浏览器将数据放到不应该放的地方。或者,您可以将autocomplete属性添加到表单标签:

<form autocomplete="off" ...></form>

1
我谈论的是复选框,因此无法将值设置为“”。而且,自动完成关闭是否意味着不“在用户按下F5时”存储表格输入值,而不仅是“用于下拉自动完成列表”?
queen3

2
根据developer.mozilla.org/en/How_to_Turn_Off_Form_Autocompletion的说法,autcompletion = off至少在Gecko中会影响“会话历史记录缓存”。我将测试它是否可以满足我的需求。
queen3

1
@ queen3:是的,复选框是个问题,因为没有办法明确地说出“未选中”。如果您仍然遇到问题,可以尝试checked="false",它可能在某些浏览器中有效。另一种选择是使用Javascript / jQuery显式取消选中页面加载时的所有复选框。
DisgruntledGoat 2010年

1
@ queen3,您的意思是“ autocomplete = off”而不是“ autocompletion = off”
Matt Baker

2
所有的答案和建议对我都不起作用。使用chrome和develeoping .net
hakan

45

堆栈溢出参考

如果浏览器已经保存了值,则它不能与value =“”一起使用,因此您应该添加它。

对于输入标签,您可以设置属性autocomplete:

<input type="text" autocomplete="off" />

您也可以为表单使用自动完成功能。


9
在Chrome中,autocomplete="off"当在单个表单元素上使用时,它似乎没有任何作用-即使将value属性显式设置为空白,并且在发送Cache-Control: Must-Revalidate标头时也没有任何作用。我必须将autocomplete="off"属性应用于<form>元素本身以抑制Chrome中的这种行为。
mindplay.dk

我在表单上执行了autocomplete =“ off”,但对我没有用
金斯利·西蒙

我需要更多信息@KingsleySimon,如浏览器,并且您的浏览器上可能有一些设置会阻止正确的行为
shareef 2016年

1
似乎浏览器的行为已更改:developer.mozilla.org/en-US/docs/Web/Security/…–
大卫

并注意html有效格式。并且例如,其内部没有其他等可保存格式
谢里夫

10

另一种方法是紧随HTML中的表单之后,使用JavaScript重置表单:

<form id="myForm">
  <input type="text" value="" name="myTextInput" />
</form>

<script type="text/javascript">
  document.getElementById("myForm").reset();
</script>


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.