From d228e1d9e7e2e2b3bf96b0f8fef706809ae4768a Mon Sep 17 00:00:00 2001 From: chenhc <2369838784@qq.com> Date: Sun, 12 May 2024 09:30:00 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=AE=BE=E5=A4=87=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96-0510-=E5=AF=86=E7=A0=81=E6=A1=86=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/myLogin.vue | 40 +++++++++++++--------------------------- 1 file changed, 13 insertions(+), 27 deletions(-) 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(""); } },