- 一个新的系统,系统登录时,我们选择记住账号密码,
- 可是进入到系统里面的一个表单,有多个输入框,其中有一个密码输入框,
- 那么这时候,
- 对搜狗浏览器,会把第一个输入框里面填充最近登录的账号,密码输入框填充该账号对应的密码
- 对chrome浏览器,双击输入框,会把历史输入记录下拉列表弹出来,列表里面包括曾经登录的账号,密码输入框则会对应填充
- 如何解决这个问题
- 有两种方式:
- 1、搜狗浏览器对表单里面的密码输入框敏感识别,我又添加了一个密码输入框,作visibility:hidden处理【不可用display:none】;此时就有两个密码输入框了,让浏览器无法选中填充对象,从而达到不会自动填充的目的
- <input autocomplete="off" type="password" maxlength="6" name="pwd" >
- <input type="password" style="visibility: hidden;width:0;margin:0;">
- 2、采用障眼法,模拟出密码输入框,
- <input autocomplete="off" type="text" id="nPassword" maxlength="6" >
- <input type="hidden" id="rPassword" name="pwd">
- // 数组存储输入的字符
- var passArr=[];
- $("#nPassword").keyup(function(){
- debugger;
- var noPass=$(this).val();
- var len = $(this).val().length;
- // 输入
- if(len>passArr.length){
- var newLen = len-passArr.length;
- for(var i=0; i<newLen; i++) {
- debugger;
- passArr.push(noPass.substring(passArr.length, passArr.length + 1));
- }
- }
- // 删除
- if(len<passArr.length){
- var _newLen=passArr.length-len;
- for(var i=0;i<_newLen;i++){
- passArr.pop();
- }
- }
- //将数组赋值给真实密码隐藏字段
- var realPwd = passArr.join("");
- $("#rPassword").val(passArr.join(""));
- var _star=""
- for(var a=0; a<passArr.length;a++){
- _star+="*";
- }
- $("#nPassword").val(_star);
- console.log("密码"+$("#rPassword").val());
- });
- 将输入的字符逐个存储在数组里,将数组的值作为最后输入的密码值,而输入框里面则显示的“*”,