Vue el-input密码输入框 按住显示密码,松开显示*;阻止浏览器密码回填,自写密码输入框;校验输入非汉字内容;文本框聚焦到内容末尾;

输入框功能集合

<template><div style="padding: 10px"><!-- 密码输入框 --><el-input:type="inputType"v-model="password"placeholder="请输入密码"auto-complete="new-password"id="pwd"style="width: 200px; margin-right: 10px"><iclass="el-input__icon el-icon-view el-input__clear"slot="suffix"@mousedown="showPwd('text')"@mouseup="showPwd('password')"@mouseleave="showPwd('password')"style="user-select: none"></i></el-input><el-button @click="focusFunc" type="primary">聚焦结尾</el-button><br /><!-- 账号输入框 限制仅允许输入非汉字 --><el-inputv-model="loginForm.userCode"clearabletype="text"placeholder="输入您的账号"@input="checkChinese"style="width: 200px; margin: 10px 0"></el-input><br /><!-- 自写密码输入框 根源上阻止密码回填 --><el-inputv-model="pwdCover"type="text"id="pwd"placeholder="输入您的密码"@input="setPassword"style="width: 200px; margin-right: 10px"><islot="suffix"class="el-input__icon el-icon-view el-input__clear"@mousedown="hidePassword(true)"@mouseup="hidePassword(false)"@mouseleave="hidePassword(false)"></i></el-input></div>
</template><script>
export default {data() {return {inputType: "password", //输入框类型password: "", //密码//pwdCover: "", // 密码 临时显示变量isShowPassword: false, // 显示密码标志位loginForm: {userCode: "", // 账号password: "", // 密码},};},methods: {// 显示密码showPwd(key) {this.inputType = key;},// 聚焦到输入框结尾focusFunc() {this.$nextTick(() => {var num = this.password.length;var dom = document.getElementById("pwd");dom.focus(); //聚焦dom.setSelectionRange(num, num); //移动光标});},// 校验输入非汉字checkChinese(value) {if (value) {if (/[\u4E00-\u9FA5]/g.test(value)) {this.loginForm.userCode = value.replace(/[\u4E00-\u9FA5]/g, "");}}},// 输入框输入事件setPassword(val) {if (val) {if (/[\u4E00-\u9FA5]/g.test(val)) {val = val.replace(/[\u4E00-\u9FA5]/g, "");this.pwdCover = val;}}if (this.isShowPassword) {this.loginForm.password = val;} else {// let reg = /[0-9a-zA-Z]/g; // 只允许输入字母和数字let reg = /./g; // 只允许输入字母和数字let nDot = /[^●]/g; // 非圆点字符let index = -1; // 新输入的字符位置let lastChar = void 0; // 新输入的字符let realArr = this.loginForm.password.split(""); // 真实密码数组let coverArr = val.split(""); // 文本框显示密码数组let coverLen = val.length; // 文本框字符串长度let realLen = this.loginForm.password.length; // 真实密码长度// 找到新输入的字符及位置coverArr.forEach((el, idx) => {if (nDot.test(el)) {index = idx;lastChar = el;}});// 判断输入的字符是否符合规范,不符合的话去掉该字符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.loginForm.password = realArr.join("");}},// 点击右侧小眼睛控制显示隐藏hidePassword(flag) {if (flag) {console.log("显示");this.isShowPassword = true;this.pwdCover = this.loginForm.password;} else {console.log("隐藏");this.isShowPassword = false;this.pwdCover = this.pwdCover.replace(/\S/g, "●");}},},
};
</script>

拓展内容 selectionStart 与 selectionEnd

在 HTML 中,文本框和文本域都有 selectionStart 和 selectionEnd 这两个属性。它们分别表示当前选定文本的起始位置和结束位置,以字符为单位。
光标起始位置 selectionStart
光标结束位置 selectionEnd
let pos = document.getElementById("pwd").selectionEnd;// 举个栗子

实用例子

const textarea = document.querySelector('textarea');
const start = textarea.selectionStart;
const end = textarea.selectionEnd;
const textToReplace = 'hello world';
textarea.value = textarea.value.substring(0, start) + textToReplace + textarea.value.substring(end);//替换
textarea.value = textarea.value.substring(0, start) + textarea.value.substring(end);//删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/13718.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PlanLLM: 首个支持开放词汇与封闭集任务的跨模态视频程序规划框架

2025年1月7号&#xff0c;由杨德杰、赵子敬、刘洋联合提出PlanLLM&#xff0c;一种基于可微调大型语言模型&#xff08;LLM&#xff09;的跨模态联合学习框架&#xff0c;用于解决视频程序规划任务。通过引入LLM增强规划模块和互信息最大化模块&#xff0c;PlanLLM突破了现有方…

WGCLOUD监控系统部署教程

官网地址&#xff1a;下载WGCLOUD安装包 - WGCLOUD官网 第一步、环境配置 #安装jdk 1、安装 EPEL 仓库&#xff1a; sudo yum install -y epel-release 2、安装 OpenJDK 11&#xff1a; sudo yum install java-11-openjdk-devel 3、如果成功&#xff0c;你可以通过运行 java …

6-图像金字塔与轮廓检测

文章目录 6.图像金字塔与轮廓检测(1)图像金字塔定义(2)金字塔制作方法(3)轮廓检测方法(4)轮廓特征与近似(5)模板匹配方法6.图像金字塔与轮廓检测 (1)图像金字塔定义 高斯金字塔拉普拉斯金字塔 高斯金字塔:向下采样方法(缩小) 高斯金字塔:向上采样方法(放大)…

DeepSeek-V3 与 DeepSeek R1 对比分析:技术与应用的全面解析

一、背景 在当今科技飞速发展的时代&#xff0c;深度学习技术如同一股强大的浪潮&#xff0c;席卷了自然语言处理&#xff08;NLP&#xff09;、计算机视觉&#xff08;CV&#xff09;以及多模态模型等众多领域。从智能语音助手到图像识别技术&#xff0c;从文本生成工具到多模…

基于 Spring Cloud + Spring AI + VUE 的知识助理平台介绍以及问题

前言&#xff08;一些废话&#xff09; 在看这篇文章的各位大佬&#xff0c;感谢你们留出几分钟时间&#xff0c;来看这个产品介绍&#xff0c;其实重点说实话&#xff0c;不是这个产品怎么样。而是在最后有一个郁结在心里的几个问题&#xff0c;希望大佬们能给出一些建议。万…

IEEE 802.3/802.2 | LLC / SNAP

注&#xff1a;本文为 “IEEE 802.3/802.2 | LLC / SNAP” 相关文章合辑。 未整理去重。 第三篇部分内容出自第二篇。 802.2 协议 haoay321 2010-01-28 20:52:02 LLC 协议 LLC&#xff08;Logic Link Control&#xff0c;逻辑链路控制&#xff09;是 IEEE 802.2 协议中规定…

【Elasticsearch】Geo-distance聚合

geo_distance聚合的形状是圆形。它基于一个中心点&#xff08;origin&#xff09;和一系列距离范围来计算每个文档与中心点的距离&#xff0c;并将文档分配到相应的距离范围内。这种聚合方式本质上是以中心点为圆心&#xff0c;以指定的距离范围为半径的圆形区域来划分数据。 为…

Chapter 4-1. Troubleshooting Congestion in Fibre Channel Fabrics

This chapter covers the following topics: 本章包括以下内容: Congestion troubleshooting methodology and workflow. Hints and tips for troubleshooting congestion. Cisco MDS NX-OS commands for troubleshooting congestion. Case studies demonstrating troubleshoo…

【字节青训营-7】:初探 Kitex 字节微服务框架(使用ETCD进行服务注册与发现)

本文目录 一、Kitex概述二、第一个Kitex应用三、IDL四、服务注册与发现 一、Kitex概述 长话短说&#xff0c;就是字节跳动内部的 Golang 微服务 RPC 框架&#xff0c;具有高性能、强可扩展的特点&#xff0c;在字节内部已广泛使用。 如果对微服务性能有要求&#xff0c;又希望…

设计模式Python版 享元模式

文章目录 前言一、享元模式二、享元模式示例 前言 GOF设计模式分三大类&#xff1a; 创建型模式&#xff1a;关注对象的创建过程&#xff0c;包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结构型模式&#xff1a;关注类和对象之间的组合&…

蓝桥杯嵌入式备赛(三)—— LED +按键 + LCD

目录 一、LED1、原理图介绍2、程序代码 二、按键1、原理图介绍2、程序代码 三、LCD1、原理图介绍2、程序代码 一、LED 1、原理图介绍 如果所示&#xff0c;STM32G431RBT6中有八个LED&#xff0c;由八个GPIO控制&#xff0c;分别为PC8-15&#xff0c;当输出为低电平时点亮。其中…

IDEA 中集成 Maven,配置环境、创建以及导入项目

目录 在 IntelliJ IDEA 中集成 Maven 并配置环境 1. 打开 IDEA 设置 2. 定位 Maven 配置选项 3. 配置 Maven 路径 4. 应用配置 创建 Maven 项目 1. 新建项目 2. 选择项目类型 3. 配置项目信息 4. 确认 Maven 设置 5. 完成项目创建 导入 Maven 项目 1. 打开导入窗口…

javaEE-6.网络原理-http

目录 什么是http? http的工作原理&#xff1a; 抓包工具 fiddler的使用 HTTP请求数据: 1.首行:​编辑 2.请求头(header) 3.空行&#xff1a; 4.正文&#xff08;body&#xff09; HTTP响应数据 1.首行&#xff1a;​编辑 2.响应头 3.空行&#xff1a; 4.响应正文…

链式结构二叉树(递归暴力美学)

文章目录 1. 链式结构二叉树1.1 二叉树创建 2. 前中后序遍历2.1 遍历规则2.2 代码实现图文理解 3. 结点个数以及高度等二叉树结点个数正确做法&#xff1a; 4. 层序遍历5. 判断是否完全二叉树 1. 链式结构二叉树 完成了顺序结构二叉树的代码实现&#xff0c;可以知道其底层结构…

复制粘贴小工具——Ditto

在日常工作中&#xff0c;复制粘贴是常见的操作&#xff0c;但Windows系统自带的剪贴板功能较为有限&#xff0c;只能保存最近一次的复制记录&#xff0c;这对于需要频繁复制粘贴的用户来说不太方便。今天&#xff0c;我们介绍一款开源、免费且功能强大的剪贴板增强工具——Dit…

【Unity3D小功能】Unity3D中实现超炫按钮悬停效果

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享QQ群&#xff1a;398291828小红书小破站 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 先来看一下效果图&#xff1a; 感觉这种效果…

优化深度神经网络

训练集、开发集(验证集)、测试集 偏差与方差 正则化 L2正则 Dropout 随机丢弃部分神经元输入&#xff0c;经常用于计算机视觉的神经网络内&#xff0c;因为通常没有足够的训练数据&#xff0c;很容易出现过拟合的问题 数据增强 训练集规一化 可以使其图像更均匀&#xff0c;…

从java角度对比nodejs、fastapi,同步和异步区别

我之前一直用java语言编程&#xff0c;最近一年用python fastapi和nodejs nestjs开发了一些项目&#xff0c;站在java程序员的角度谈谈异步编程和同步编程的区别&#xff0c;主要在两方面 处理请求&#xff0c;java常用的tomcat是多线程处理请求并执行代码&#xff0c;同步阻塞…

《图解设计模式》笔记(五)一致性

十一、Composite模式&#xff1a;容器与内容的一致性 像文件夹与文件一样&#xff0c;文件夹中可以放子文件夹与文件&#xff0c;再比如容器中可以放更小的容器和具体内容。 Composite模式&#xff1a;使容器与内容具有一致性&#xff0c;创造出递归结构。 Composite&#x…

爬虫学习笔记之Robots协议相关整理

定义 Robots协议也称作爬虫协议、机器人协议&#xff0c;全名为网络爬虫排除标准&#xff0c;用来告诉爬虫和搜索引擎哪些页面可以爬取、哪些不可以。它通常是一个叫做robots.txt的文本文件&#xff0c;一般放在网站的根目录下。 robots.txt文件的样例 对有所爬虫均生效&#…