禁止 input 自动填充

Posted IT枫斗者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了禁止 input 自动填充相关的知识,希望对你有一定的参考价值。

禁止 input 自动填充

  • 在编写 Form 表单样式的时候,修改自动填充后的 input 样式是很麻烦甚至不可行的,而且还有一些不需要自动填充的场景。

  • 浏览器根据保存数据时表单控件的 typename 去匹配。

  • 常用的就是 typepasswordnameemalusernamepasswordtelephone 等,甚至不设置 name

  • 浏览器会在表单加载时候匹配到之前保存的表单空间,然后将保存在客户端的信息自动填充它,额外的数据可能会填充到相邻的表单控件中。

  • 可以通过设置 autocompleteoff 关闭自动填充功能。

  • input 的 autocomplete 表示这个控件的值是否可被浏览器自动填充,设置为 off 表示用户必须手动填值,或者该页面提供了自己的自动补全方法。浏览器不对此字段自动填充。。

  • 但是,当表单控件获取焦点时,浏览器仍会显示自动填充提示(选项框)。

  • 而且实际情况下 typepassword 的表单控件即便设置了 autocomplete="off" 也不能有效禁止自动填充(大部分下不起作用)。

  • 幸运的是将 autocomplete 设置为 new-password 可以成功禁止,它表示新密码(如创建帐号或更改密码时使用)。

  • 参考的是163邮箱:

  • 而它的兼容性也不错:

方案总结

  • 要想禁止表单控件的自动填充功能,可以给这个 input 添加 autocomplete="new-password" 的属性,一个表单中如果存在多个 type="password" 只需给其中一个(无论哪一个)设置这个属性即可全部禁止。

  • 设置 new-password 也可以禁止浏览器弹出自动填充提示,包括 type="password" 以外的控件。

chrome浏览器 input 禁止自动填充 autocomplete="off" 无效

问题:

<input  type="text" autocomplete="off"> 无效

<input  type="text" autocomplete="new-password"> 也无效

新版chrome浏览器还是有自动填充效果。

解决方法:

在form,和所有input 上面 添加 值不为 off 和 on 的autocomplete属性

<form autocomplete="no">

  <input type="text" autocomplete="no">

</form>

以上是关于禁止 input 自动填充的主要内容,如果未能解决你的问题,请参考以下文章

禁止浏览器自动填充密码

如何禁止浏览器自动填充非登陆input的账号和密码

input输入框自动填充的问题

Vue项目—解决谷歌浏览器禁止自动填充密码的问题

如何禁止表单用户名,密码自动填充

如何禁止谷歌浏览器自动填充密码