点击“返回”按钮时禁用浏览器表单输入预填充/自动填充功能

Posted

技术标签:

【中文标题】点击“返回”按钮时禁用浏览器表单输入预填充/自动填充功能【英文标题】:Disable browsers Form inputs prefill/autofill feature when hitting "back" button 【发布时间】:2014-07-29 15:29:43 【问题描述】:

我想“防止浏览器在点击“返回”按钮时预填表单输入”。实际上,我希望填充初始值(通过 jsp 添加),而不是浏览器的(缓存)值。

解决方案 1:我发现这可以通过禁用当前页面的浏览器缓存来完成。考虑到我“只”想为“表单”禁用此预填充功能(因此仅禁用表单而不是整个页面的缓存),这似乎是一个相当极端的解决方案。

解决方案 2:那么,显而易见的下一个解决方案是使用 javascript:即将初始值存储在 data-* 属性中,然后在页面加载时,如果输入值不同,则将输入值替换为初始值。

这两种解决方案似乎都不完美(这些都是变通方法)我求助于你们希望听到更好的解决方案。

资源:

How does SO's form remember previous input values? Disable Firefox's Auto-fill Pressing back prefills inputs with value from right before submit html form values and 'Back' button

【问题讨论】:

【参考方案1】:

我首先想到的是使用<input type="reset"> 按钮。这些现在并不常见,因为用户很少真正想要重置表单,但这里可能正是您需要的。

您也可以在页面加载时使用 form.reset(); 在 javascript 中执行此操作,而不是为用户提供按钮。

https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.reset

这与您的解决方案 2 类似,因此仍然是浏览器行为的解决方法,但它是标准表单的(旧)部分,我认为它只需很少的额外代码就可以解决问题(不需要data-* 属性),所以想把它扔掉。

【讨论】:

很棒的提示,谢谢。此外,这是关于form.reset()***.com/questions/3786694/…的相关答案

以上是关于点击“返回”按钮时禁用浏览器表单输入预填充/自动填充功能的主要内容,如果未能解决你的问题,请参考以下文章

Angular 2 - 浏览器自动填充时表单无效

使用自动完成填充表单时,Javascript 不启用按钮

哪个高手能说一下chrome的“表单填充”有啥用

谷歌浏览器 表单自动填写

根据另一个表单字段(单选按钮)预填充值 HTML 表单输入

从 Angular 2 上的查询参数中预填充输入文本框