|
|
|
@ -197,41 +197,27 @@ export default {
|
|
|
|
|
setPassword(val) {
|
|
|
|
|
if (this.isShowPassword) {
|
|
|
|
|
this.password = val;
|
|
|
|
|
this.pwdCover = val; // 如果显示密码,则pwdCover也显示密码
|
|
|
|
|
} else {
|
|
|
|
|
// let reg = /[0-9a-zA-Z]/g; // 只允许输入字母和数字
|
|
|
|
|
let nDot = /[^●]/g; // 非圆点字符
|
|
|
|
|
let index = -1; // 新输入的字符位置
|
|
|
|
|
let lastChar = void 0; // 新输入的字符
|
|
|
|
|
let realArr = this.password.split(""); // 真实密码数组
|
|
|
|
|
let coverArr = val.split(""); // 文本框显示密码数组
|
|
|
|
|
let coverLen = val.length; // 文本框字符串长度
|
|
|
|
|
let realLen = this.password.length; // 真实密码长度
|
|
|
|
|
// 找到新输入的字符及位置
|
|
|
|
|
coverArr.forEach((el, idx) => {
|
|
|
|
|
if (nDot.test(el)) {
|
|
|
|
|
index = idx;
|
|
|
|
|
lastChar = el;
|
|
|
|
|
let realLen = realArr.length; // 真实密码长度
|
|
|
|
|
// 如果用户输入的字符少于当前真实密码长度,则需要删除密码
|
|
|
|
|
if (coverLen < realLen) {
|
|
|
|
|
// 删除密码末尾的字符,直到与输入长度匹配
|
|
|
|
|
realArr.splice(coverLen);
|
|
|
|
|
} else if (coverLen > realLen) {
|
|
|
|
|
// 用户输入了新的字符,添加到真实密码末尾
|
|
|
|
|
for (let i = realLen; i < coverLen; i++) {
|
|
|
|
|
// 检查新输入的字符是否是有效的密码字符(这里假设所有字符都是有效的)
|
|
|
|
|
// 如果需要校验,可以在这里添加逻辑
|
|
|
|
|
realArr.push(coverArr[i]);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
// 判断输入的字符是否符合规范,不符合的话去掉该字符
|
|
|
|
|
// if (lastChar && !reg.test(lastChar)) {
|
|
|
|
|
// coverArr.splice(index, 1);
|
|
|
|
|
// this.pwdCover = coverArr.join("");
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
if (realLen < coverLen) {
|
|
|
|
|
// 新增字符
|
|
|
|
|
realArr.splice(index, 0, lastChar);
|
|
|
|
|
} else if (coverLen <= realLen && index !== -1) {
|
|
|
|
|
// 替换字符(选取一个或多个字符直接替换)
|
|
|
|
|
realArr.splice(index, realLen - (coverLen - 1), lastChar);
|
|
|
|
|
} else {
|
|
|
|
|
// 删除字符,因为 val 全是 ● ,没有办法匹配,不知道是从末尾还是中间删除的字符,删除了几个,不好对 password 处理,所以可以通过光标的位置和 val 的长度来判断
|
|
|
|
|
let pos = document.getElementById("pwd").selectionEnd; // 获取光标位置
|
|
|
|
|
realArr.splice(pos, realLen - coverLen);
|
|
|
|
|
}
|
|
|
|
|
// 将 pwdCover 替换成 ●
|
|
|
|
|
this.pwdCover = val.replace(/\S/g, "●");
|
|
|
|
|
// 更新真实密码
|
|
|
|
|
this.password = realArr.join("");
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|