禁止 input 自动填充
在编写 Form 表单样式的时候,修改自动填充后的 input 样式是很麻烦甚至不可行的,而且还有一些不需要自动填充的场景。
浏览器根据保存数据时表单控件的 type 和 name 去匹配。
常用的就是 type 为 password,name 为 emal、username、password、telephone 等,甚至不设置 name。
浏览器会在表单加载时候匹配到之前保存的表单空间,然后将保存在客户端的信息自动填充它,额外的数据可能会填充到相邻的表单控件中。
可以通过设置 autocomplete 为 off 关闭自动填充功能。
input 的 autocomplete 表示这个控件的值是否可被浏览器自动填充,设置为 off 表示用户必须手动填值,或者该页面提供了自己的自动补全方法。浏览器不对此字段自动填充。。
但是,当表单控件获取焦点时,浏览器仍会显示自动填充提示(选项框)。
而且实际情况下 type 为 password 的表单控件即便设置了 autocomplete="off" 也不能有效禁止自动填充(大部分下不起作用)。
幸运的是将 autocomplete 设置为 new-password 可以成功禁止,它表示新密码(如创建帐号或更改密码时使用)。
方案总结
要想禁止表单控件的自动填充功能,可以给这个 input 添加 autocomplete="new-password" 的属性,一个表单中如果存在多个 type="password" 只需给其中一个(无论哪一个)设置这个属性即可全部禁止。
设置 new-password 也可以禁止浏览器弹出自动填充提示,包括 type="password" 以外的控件。
来源:https://blog.csdn.net/Andrew_Chenwq/article/details/127237282
问题描述:
通常在前端开发的过程中,使用表单中加入输入框来实现登录注册是十分常见的,一些浏览器就会默认填充我们曾经使用过的账号密码,这个处理方式对于登录的时候是非常方便,但是对于注册页面,显然自动填充就非常鸡肋。
博主在解决这个自动填充问题的时候用了以下几种方法,都没有很完全的得到解决(不同浏览器兼容性问题),本人使用的是谷歌浏览器
在form表单中或者input标签里面添加auto-complete="off"(没有解决)
<el-form autocomplete="off"> <el-form-item> <el-input prefix-icon="el-icon-user-solid" v-model.trim="registerForm.account" clearable autocomplete="off" > </el-input> </el-form-item> </el-form>
在input 里面加上 autocomplete=“new-password” 属性(没有解决)
<el-form> <el-form-item> <el-input prefix-icon="el-icon-user-solid" v-model.trim="registerForm.account" clearable autocomplete="new-passowrd" > </el-input> </el-form-item> </el-form>
直接上代码(没有解决)
$(function(){ $('#setaccount input').attr("readonly","readonly");//让from表单下所有的input输入框都是只读状态(#setaccount是方法2里面from表单的id) $('#setaccount input').click(function(){//当某个被input框点击的时候,就删掉被点击的这个input框的只读属性readonly $(this).removeAttr("readonly"); }); });
! 然后博主发现了一种终极解决方法,分享给遇到同样问题的各位
✅使用readonly属性和foucs方法联合搭配,当浏览器打开页面的时候,将输入框设为只读,当鼠标聚焦到输入框的时候再给它放开。tips:readonly 属性规定输入字段为只读 <el-form> <el-form-item> <el-input prefix-icon="el-icon-user-solid" v-model.trim="registerForm.account" clearable :readonly="readonlyInput" @focus="cancelReadOnly()" > </el-input> </el-form-item> </el-form> readonlyInput: true, cancelReadOnly () { this.readonlyInput = false; },
希望这种方法能够帮助到各位!💖
来源:https://blog.csdn.net/qq_44833124/article/details/129119756