使页面告诉浏览器不要缓存/保留输入值。
使页面告诉浏览器不要缓存/保留输入值。
大多数浏览器会缓存表单输入的值。所以当用户刷新页面时,输入框的值保持不变。\n这是我的问题。当用户点击保存时,服务器会验证提交的数据(例如选中的产品),如果验证失败,服务器会将数据发送回浏览器。然而,正如上面所述,即使服务器清除了某些值的选择,由于浏览器缓存的原因,它们仍然可能被选中!\n我的数据有不可见的复选框(直到选择了父级项目才可见),所以用户可能甚至没有意识到之前的某个值仍然被选中,直到再次点击保存并收到错误消息 - 尽管用户认为它没有被选中。这非常令人烦恼。\n可以通过执行Ctrl + F5来解决这个问题,但这甚至不是一个解决办法。是否有一种自动/程序化的方法告诉浏览器在某些表单/页面上不要缓存表单输入数据?
问题的出现原因:浏览器会记住输入框的值,导致在刷新页面时输入框的值会被保留。
解决方法:在输入框的HTML标签中添加autocomplete="off"
属性,或者在整个表单的<form>
标签中添加autocomplete="off"
属性来阻止浏览器记住输入框的值。
以下是参考内容的整理:
根据Stack Overflow的参考链接,如果浏览器已经保存了输入框的值,使用value=""
是无效的,所以应该添加autocomplete="off"
属性。
对于标签,可以使用autocomplete="off"
属性:
<input type="text" autocomplete="off" />
也可以对整个表单使用autocomplete="off"
属性。
在Chrome浏览器中,单独在表单元素上使用autocomplete="off"
属性没有效果,即使显式将value
属性设置为空,并在发送Cache-Control: Must-Revalidate
头时也没有效果。必须将autocomplete="off"
属性应用于<form>
元素本身,才能在Chrome中禁止这种行为。
有用户在表单上使用autocomplete="off"
属性,但对他们来说并没有起作用。可能是因为他们的浏览器有一些设置阻止了正确的行为。
据说浏览器的行为已经发生了变化,可以参考developer.mozilla.org/en-US/docs/Web/Security/…。
需要注意的是,HTML表单应该是有效的,并且例如不应该在一个表单内包含另一个表单。
问题的出现原因是浏览器会自动保存输入值,导致在刷新页面或重新加载时,输入值仍然存在。解决方法是通过设置input标签的value属性为空值或者在form标签中添加autocomplete="off"属性来告诉浏览器不要缓存或保存输入值。对于复选框,可以尝试使用checked="false"来取消选中状态,或者使用JavaScript/jQuery在页面加载时将所有复选框都取消选中。另外,在MVC中可以尝试在控制器操作中使用ModelState.Clear()来清除旧的输入值。对于Chrome浏览器和使用.net的开发者,尝试在input字段中添加autocomplete="off"属性可能是解决方法。