创建页面告诉浏览器不要缓存/保存输入值

大多数浏览器缓存输入值,所以当用户刷新页面时,输入值是相同的。

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

我的数据有不可见的复选框(直到父项被选中) ,所以用户甚至可能不知道之前的一些值仍然被选中,直到再次单击 保存并得到一个错误消息——即使用户认为它不是。这很让人恼火。

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

203728 次浏览

是否将值显式设置为空白? 例如:

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

这应该能阻止浏览器把数据放到不该放的地方。或者,您可以将 autocomplete属性添加到 form 标记中:

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

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

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


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

来自 堆栈溢出引用

如果浏览器已经保存了 value = “”,那么它就无法工作,因此您应该添加。

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

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

也可以对表单使用自动补全。

基本上,有两种清除缓存的方法:

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

或者

$('#Textfiledid').attr('autocomplete', 'off');

这在新的浏览器中对我很有效:

autocomplete="new-password"

inputProps中加入 typeautoComplete:

<TextField
placeholder="password"
onChange={(e) => setFieldValue("password", e.target.value)}
inputProps=\{\{
type: "password",
autoComplete: 'new-password'
}}
/>