diff --git a/src/views/myLogin.vue b/src/views/myLogin.vue index 2a3a4f43..d3715736 100644 --- a/src/views/myLogin.vue +++ b/src/views/myLogin.vue @@ -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(""); } },