当前位置: 首页 > news >正文

VUE阻止浏览器记住密码若依CLOUD(INPUT框密码替换圆点)

网上找的要不就是缺少方法要不就是不好用,故发一个完整的
粘贴可用版本

  <el-form-item prop="password"><el-input v-model="loginForm.pwdCover" type="text" name="pwd" id="pwd" placeholder="密码" autocomplete="off" @input="setPassword"><i slot="prefix" class="el-icon-lock"></i></el-input></el-form-item>
      loginForm: {username: "",password: "",pwdCover:"",},password: "",
setPassword(val) {let realarr = this.password.split(''); // 真实密码let coverarr = val.split(''); // 覆盖的密码数组let coverlen = coverarr.length; // 覆盖的密码数组let realLen = realarr.length; // 覆盖的密码数组let lastchar = ''; // 新输入的字符 let index = -1; // 新输入的字符位置coverarr.forEach((el, elIndex) => {if (el !== '●') {// 截取未被替换为·的字符串,即为本次键入的内容index = elIndex;lastchar = lastchar + el; // 因为监听的是每次输入框的变化值,所以插入的一定是连贯的字符串}});if (lastchar.length) {index = ( index + 1 ) - lastchar.length // 有输入的字符串,计算真正的插入位置}if (realLen +lastchar.length === coverlen) {// 未删除字符串且新增字符,直接插入realarr.splice(index, 0, lastchar);} else if (index === -1) {//index = -1 即未找到非*号字符,没有新增,无法通过该方法判断在哪个位置删除的// 使用selectionStart获取光标位置,确定位置,删去缺少的元素个数let pos = document.getElementById('pwd').selectionStart; realarr.splice(pos, realLen - coverlen);} else {// 替换字符realarr.splice(index, (realLen + lastchar.length)-coverlen, lastchar);}// 将 pwdCover 替换成 ●this.loginForm.pwdCover = val.replace(/\S/g, '●');this.loginForm.password = realarr.join('');this.password = realarr.join('');},

粘贴不可用版本(需要手工一个个字符键入)

setPassword(val) {// 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;}});// 判断输入的字符是否符合规范,不符合的话去掉该字符// if(lastChar && !reg.test(lastChar)) {//     coverArr.splice(index, 1);//     this.loginForm.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.loginForm.pwdCover = val.replace(/\S/g, '●');this.loginForm.password = realArr.join('');this.password = realArr.join('');},getCode() {getCodeImg().then(res => {this.captchaOnOff = res.captchaOnOff === undefined ? true : res.captchaOnOff;if (this.captchaOnOff) {this.codeUrl = "data:image/gif;base64," + res.img;this.loginForm.uuid = res.uuid;}});},

相关文章:

  • 一个可以自动生成随机区组试验的excel VBA小程序
  • uniapp使用数据持久化存储
  • 【JavaEE进阶】——Mybatis操作数据库(使用注解和XML方式)
  • docker部署Minio对象存储及使用
  • mongodb 编码格式 Detected BSON
  • Golang中的 defer 关键字和Python中的上下文管理with关键字
  • 数据治理-数据标准演示
  • 5岁幼儿编程:开启未来的神秘之门
  • 数据库(15)——DQL分页查询
  • npm install 出错,按照版本不匹配解决
  • springboot针对返回的response拦截处理越权问题
  • 本地电脑通过远程服务器进行ssh远程转发
  • 高考后的赚钱新路径:千行赏金助你开启财富之旅
  • MySQL之创建高性能的索引(四)
  • 超大功率光伏并网逆变器学习(三相)
  • javascript从右向左截取指定位数字符的3种方法
  • php ci框架整合银盛支付
  • Sass 快速入门教程
  • SpingCloudBus整合RabbitMQ
  • Vue2.x学习三:事件处理生命周期钩子
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • Xmanager 远程桌面 CentOS 7
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 记录一下第一次使用npm
  • 聊聊hikari连接池的leakDetectionThreshold
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 微信小程序实战练习(仿五洲到家微信版)
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ‌[AI问答] Auto-sklearn‌ 与 scikit-learn 区别
  • #pragma预处理命令
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (10)STL算法之搜索(二) 二分查找
  • (C++20) consteval立即函数
  • (NSDate) 时间 (time )比较
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (力扣)1314.矩阵区域和
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)visual stdio 书签功能介绍
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .apk文件,IIS不支持下载解决
  • .NET Core WebAPI中封装Swagger配置
  • .Net 基于IIS部署blazor webassembly或WebApi
  • .Net 基于MiniExcel的导入功能接口示例
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .Net小白的大学四年,内含面经
  • [] 与 [[]], -gt 与 > 的比较
  • [AIGC] SQL中的数据添加和操作:数据类型介绍
  • [Android] Binder 里的 Service 和 Interface 分别是什么