关于浏览器对输入框自动填充的处理
关于浏览器对输入框自动填充的处理
问题
现在很多浏览器都有记住密码的功能,以我常用的chrome浏览器为例,当某个页面记住了密码之后,若是页面中出现了这样一种情况,整个页面上先后出现了两个input,前一个input是文本输入框,即type为text,后一个input是密码输入框,type为password,浏览器就会将保存的密码进行填充。而这种行为,有些情况下并不是我们想要的。
解决方案
- 对于chrome浏览器,对input设置
autocomplete="new-password"
,可以起到不自动填充密码的效果 - 对于360浏览器,对于
autocomplete
不支持,所以得使用一些其他技巧,如下所示:- 给第一个
type="text"
的input前面再加一个隐藏的type="text"
的input和一个隐藏的type="password"
的input。(亲测有效,但是博主在不断增加input的情况下,又失效了) - 将密码输入设置为只读,需要编辑时更改其状态(博主使用的是element-ui组件,在设置只读时,会导致一些后置的图标不显示,也放弃)
<html> <head></head> <body> <form> <label>Login <input type="text" name="login"/></label></br> <label>New Password <input type="password" id="password" name="pwd" readonly autocomplete="new-password"/></label><br/> <input type="submit"> </form> <script> document.getElementById('password').onfocus = function() { document.getElementById('password').removeAttribute('readonly'); }; </script> </html>
- 将
type="password"
的input放前面,type="text"
的input放后面,并使用flex-direction: row-reverse
进行调换顺序。(对于360上自动填充的解决,博主使用的是这种方法)
- 给第一个