项目组长提出在登录页面的时候不自动填充密码,为了防止用户账号泄露,保障安全性。
很多浏览器在我们初次登录的时候都会弹框询问是否记住密码,一旦我们选择了保存,那么后面每次进入网站的时候都会默认填充好密码,尝试了好多方法都不行,还是这个方法有效
主要是将输入的密码的值替换成●
<input
@input="setPassword"
id="pwd"
autocomplete="off"
type="text"
v-model="password"
placeholder="请输入您的密码"
onfocus="this.placeholder=''"
onblur="this.placeholder='请输入您的密码'"/>
password: '',
isShowPassword: false,
realPassword: ''
setPassword(val) {
if (this.isShowPassword) {
this.realPassword = val.target.value; // 如果为true,显示明文密码
} else {
// let reg = /[0-9a-zA-Z]/g; // 只允许输入字母和数字的正则表达式
let nDot = /[^●]/g; // 非圆点字符的正则表达式
let index = -1; // 新输入的字符位置
let lastChar = void 0; // 新输入的字符
let realArr = this.realPassword.split(""); // 真实密码数组
let coverArr = val.target.value.split(""); // 文本框显示密码数组
let coverLen = val.target.value.length; // 文本框字符串长度
let realLen = this.realPassword.length; // 真实密码长度
// 找到新输入的字符及位置
coverArr.forEach((el, idx) => {
if (nDot.test(el)) {
index = idx;
lastChar = el;
}
});
if (realLen < coverLen) {
// 新增字符
realArr.splice(index, 0, lastChar);
} else if (coverLen <= realLen && index !== -1) {
// 替换字符(选取一个或多个字符直接替换)
realArr.splice(index, realLen - (coverLen - 1), lastChar);
} else {
// 删除字符,根据光标位置和 val 的长度判断
let pos = document.getElementById("pwd").selectionEnd; // 获取光标位置
realArr.splice(pos, realLen - coverLen);
}
this.password = val.target.value.replace(/\S/g, "●"); // 替换成 ●
this.realPassword = realArr.join(""); // 真实密码
}
},