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;}});},
相关文章:
VUE阻止浏览器记住密码若依CLOUD(INPUT框密码替换圆点)
网上找的要不就是缺少方法要不就是不好用,故发一个完整的 粘贴可用版本 <el-form-item prop"password"><el-input v-model"loginForm.pwdCover" type"text" name"pwd" id"pwd" placeholder"密码" autoco…...
GPT-4o:人工智能新纪元的启航者
引言 随着人工智能技术的不断进步,我们见证了从简单的自动化工具到复杂的决策支持系统的演变。在这一演变过程中,OpenAI的GPT系列无疑占据了领导地位。最近,GPT-4o的推出再次引发了关于AI能力的广泛讨论。本文将对GPT-4o进行详细评价&#x…...
CSRF跨站请求伪造漏洞
CSRF跨站请求伪造漏洞 1.CSRF漏洞概述2.防御CSRF攻击3.CSRF防御绕过CSRF令牌未绑定到用户会话自定义标头令牌绕过绕过Referer检查关键词绕过 4.利用示例使用HTML标签进行GET表单 GET 请求表单POST请求通过 iframe 发送表单 POST 请求Ajax POST 请求 5.CSRF BP 验证方法6.CSRF测…...
【Linux】System V 消息队列(不重要)
一、消息队列的原理 一个进程给另一个进程发送类型数据块的方式每一个数据快都被认为是有一个类型的,接收者进程接收的数据快可以有不同的类型值 二、消息队列的接口 和共享内存的接口很像: 消息队列的创建 创建消息队列我们需要用msgget函数&#x…...
label标签
01、label标签 概述 label标签页属于:form元素的成员之一,它有啥意义呢?它主要用来修饰文本和form元素的指向和体验问题。我们只需要把文本和form元素使用label标签包裹,就可以产生一个奇妙的化学反应。就是:我们点击…...
vruntime
vruntime vruntime 变量存放进程的虚拟运行时间,虚拟时间是以 ns 为单位的,which is the actual runtime (the amount of time spent running) normalized (or weighted) by the number of runnable processesvruntime 和定时器节拍不再相关。优先级相同的所有进程的虚拟运行时…...
!力扣 108. 将有序数组转换为二叉搜索树
给你一个整数数组 nums ,其中元素已经按升序排列,请你将其转换为一棵 平衡二叉搜索树。 示例 1: 输入:nums [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案…...
13、matlab使用switch case语句实现两个数字的加减乘除运算以及数据的输入输出(可以设置计算次数)
1、不同数据的键盘输入 函数:input() 代码: a input(请输入一个数字: );%输入数字 c input(请输入一个运算符号: ,s);%输入字符 b input(请输入一个数字: );%输入数字 请输入一个数字: 1 请输入一个运算符号: 请输入一个数字: 2 2、 格式化输出 …...
数学建模 —— 聚类分析(3)
目录 一、聚类分析概述 1.1 常用聚类要素的数据处理 1.1.1 总和标准化 1.1.2 标准差标准化 1.1.3 极大值标准化 1.1.4 极差的标准化 1.2 分类 1.2.1 快速聚类法(K-均值聚类) 1.2.2 系统聚类法(分层聚类法) 二、分类统计…...
java —— 匿名内部类与 Lambda 表达式
一、匿名内部类 匿名内部类是一种没有名称的类,多用于只使用一次的情况,本质上就是其所继承的父类或接口的一个子类。 (一)继承普通类的情况 public class Test{public void method(){System.out.println("通用方法"…...
对红黑树、跳表、B+树的一些理解
文章目录 红黑树应用场景 跳表使用场景 B树使用场景 毫无疑问数据结构是复杂的,让人头大的,大学时唯一挂科的就是数据结构,上学时不用心,不晓得自己的职业生涯要一直被数据结构支配。 或多或少,面试抱佛脚时࿰…...
C++ deque 双端队列
deque原理介绍 deque(双端队列):是一种双开口的"连续"空间的数据结构,双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1)。 与vector比较,头插效率高,不需要搬移元素…...
Java | Leetcode Java题解之第127题单词接龙
题目: 题解: class Solution {Map<String, Integer> wordId new HashMap<String, Integer>();List<List<Integer>> edge new ArrayList<List<Integer>>();int nodeNum 0;public int ladderLength(String beginW…...
容器编排技术:现状、应用与未来
在当今的软件开发和运维中,容器技术已经成为一个核心组成部分。容器不仅改变了应用程序的开发、测试和部署方式,还推动了整个软件生命周期管理的革新。而容器编排技术作为容器管理和自动化的重要工具,进一步提升了容器的使用效率和灵活性。 …...
SQL158 每类视频近一个月的转发量/率
描述 用户-视频互动表tb_user_video_log iduidvideo_idstart_timeend_timeif_followif_likeif_retweetcomment_id110120012021-10-01 10:00:002021-10-01 10:00:20011NULL210220012021-10-01 10:00:002021-10-01 10:00:15001NULL310320012021-10-01 11:00:502021-10-01 11:01…...
自动化办公01 smtplib 邮件⾃动发送
目录 一、准备需要发送邮件的邮箱账号 二、发送邮箱的基本步骤 1. 登录邮箱 2. 准备数据 3. 发送邮件 三、特殊内容的发送 1. 发送附件 2. 发送图片 3. 发送超文本内容 4.邮件模板内容 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议…...
Flutter 中的 ScrollConfiguration 小部件:全面指南
Flutter 中的 ScrollConfiguration 小部件:全面指南 Flutter 是一个功能强大的 UI 框架,它允许开发者使用 Dart 语言来构建高性能、美观的移动、Web 和桌面应用。在 Flutter 中,滚动是用户界面中一个常见的交互元素。ScrollConfiguration 是…...
网络网络层
data: 2024/5/25 14:02:20 周六 limou3434 叠甲:以下文章主要是依靠我的实际编码学习中总结出来的经验之谈,求逻辑自洽,不能百分百保证正确,有错误、未定义、不合适的内容请尽情指出! 文章目录 1.协议结构2.封装分离3.…...
【Docker】学习笔记(超万字图文整理)
前言 再此感谢黑马程序员提供的Docker课程! 什么是Docker?看这一篇干货文章就够了! UPD: 补充更新微服务集群、Docker镜像仓库部分内容 所有笔记、生活分享首发于个人博客 想要获得最佳的阅读体验(无广告且清爽)&#…...
el-table超过宽度强制显示滚动条
使用css强制显示: .el-table .el-table__body-wrapper::-webkit-scrollbar {display: block; }...
Win11Debloat:Windows 11系统优化终极指南,免费提升电脑性能50%
Win11Debloat:Windows 11系统优化终极指南,免费提升电脑性能50% 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes…...
Windows 10/11(64位)上安装 WinQSB——无需虚拟机
以下是在 Windows 10/11(64位) 上安装 WinQSB 的完整步骤,无需虚拟机,并安装在 D 盘。原理说明 WinQSB 是一个 16位 Windows 程序,64位 Windows 原生不支持运行它。解决方案是使用 winevdm(otvdm࿰…...
ARMv8内存访问指令STLUR与STLXP详解
1. ARMv8内存访问指令概述 在ARMv8架构中,内存访问指令构成了处理器与内存系统交互的基础设施。作为RISC架构的典型代表,ARMv8通过精简但功能明确的指令集实现了高效的内存操作。其中存储(Store)类指令负责将寄存器数据写入内存,而根据不同的…...
避开这些坑,你的蓝桥杯单片机程序也能拿高分:EEPROM存储与电压比较逻辑详解
蓝桥杯单片机高分秘籍:EEPROM存储与电压比较逻辑的深度优化 在蓝桥杯单片机竞赛中,能够完成基本功能只是及格线,真正决定成绩高低的是对细节的掌控和边界条件的处理。许多参赛者在EEPROM数据存储和复杂电压比较逻辑这两个关键环节频频失分&am…...
Miniconda虚拟环境配置踩坑实录:从‘CondaHTTPError’到完美隔离环境
Miniconda虚拟环境配置踩坑实录:从‘CondaHTTPError’到完美隔离环境 第一次在终端输入conda create -n myenv python3.8时,满心期待能快速搭建起一个干净的Python工作环境。然而几秒钟后,屏幕上突然跳出的红色报错信息让整个流程戛然而止&a…...
QCustomPlot交互秘籍:手把手实现数据点拾取、矩形框选与自定义高亮样式
QCustomPlot交互功能深度解析:从数据点拾取到视觉定制全攻略 1. 交互式数据可视化的核心价值 在现代数据可视化应用中,静态图表已经无法满足用户日益增长的交互需求。QCustomPlot作为Qt生态中功能强大的绘图库,其交互功能的设计既考虑了开发…...
除了STM32,你的CubeMX项目还能一键迁移到哪些国产MCU?APM32F030实测与选型思考
STM32生态迁移实战:从CubeMX到国产MCU的全链路决策指南 当ST官方涨价函在技术群里刷屏时,我正用CubeMX给APM32F030生成工程模板。屏幕上的进度条流畅运行,就像三年前操作STM32F030时一样——这个细节突然让我意识到:国产MCU的兼容…...
chatgpt-web-midjourney-proxy的插件系统:扩展AI功能的开发指南
chatgpt-web-midjourney-proxy的插件系统:扩展AI功能的开发指南 在当今AI应用快速发展的时代,chatgpt-web-midjourney-proxy项目以其强大的插件系统脱颖而出,为开发者提供了无限扩展AI功能的可能性。这个项目不仅整合了ChatGPT、Midjourney和…...
3分钟快速上手:Hanime1Plugin安卓插件打造纯净动画观影体验终极指南
3分钟快速上手:Hanime1Plugin安卓插件打造纯净动画观影体验终极指南 【免费下载链接】Hanime1Plugin Android插件(https://hanime1.me) (NSFW) 项目地址: https://gitcode.com/gh_mirrors/ha/Hanime1Plugin 你是否厌倦了动画观影时被各种广告弹窗打断&#x…...
安卓APP通过JNI调用ATSHA204A加密芯片实战指南
1. 项目概述与核心需求解析 在安卓应用开发领域,尤其是涉及物联网、金融支付、版权保护等高安全要求的场景,单纯依靠软件层面的加密算法已经不足以应对日益复杂的攻击手段。硬件加密芯片,如ATSHA204A,以其物理隔离、密钥不可读取等…...
