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);//删除
相关文章:
Vue el-input密码输入框 按住显示密码,松开显示*;阻止浏览器密码回填,自写密码输入框;校验输入非汉字内容;文本框聚焦到内容末尾;
输入框功能集合 <template><div style"padding: 10px"><!-- 密码输入框 --><el-input:type"inputType"v-model"password"placeholder"请输入密码"auto-complete"new-password"id"pwd"style…...
Three.js实现炫酷图片粒子化效果:从聚合到扩散的动态演变
一、效果展示 本特效实现了一个基于图片像素的智能粒子系统,通过Three.js引擎驱动,呈现出以下惊艳效果: 图片粒子化:将任意图片转化为动态粒子系统智能聚合扩散:粒子在聚合状态与随机扩散状态间自然过渡物理运动模拟…...
MySQL中like模糊查询如何优化?
大家好,我是锋哥。今天分享关于【MySQL中like模糊查询如何优化?】面试题。希望对大家有帮助; MySQL中like模糊查询如何优化? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在MySQL中,LIKE模糊查询通常会影…...
为什么使用nohup 和 启动的python脚本,进程还在,但是不处理数据
使用 nohup 和 & 启动 Python 脚本后,进程仍然在运行但不处理数据,可能有几个原因: 1. 脚本内部问题(例如死循环、阻塞) Python 脚本内部可能存在阻塞操作或死循环,导致进程不执行预期的任务。你可以…...
Android 约束布局ConstraintLayout整体链式打包居中显示
Android 用约束布局ConstraintLayout实现将多个控件视作一个整体居中显示,使用 app:layout_constraintHorizontal_chainStyle"packed"实现 chain 除了链条方向有横向和竖向区分外, chain链条上的模式有 3种 spread - 元素将被展开&#…...
在 MySQL 8 中配置主从同步(主从复制)是一个常见的需求,用于实现数据的冗余备份、读写分离等。
在 MySQL 8 中配置主从同步(主从复制)是一个常见的需求,用于实现数据的冗余备份、读写分离等。以下是详细的配置步骤: 一、环境准备 假设你有两台 MySQL 服务器: 主服务器(Master):IP 地址为 192.168.1.100,端口为 3306从服务器(Slave):IP 地址为 192.168.1.101,…...
4 前端前置技术(上):AJAX技术、Axios技术(前端发送请求)
文章目录 前言一、Ajax技术(从服务端获取数据,发送各种请求)0 接口文档管理:使用apipost等接口测试软件创建接口便于前端后端分离测试1 基本概念2 原生Ajax使用示例(几年前的早期用法) 二、 Axios技术(对原…...
【自学笔记】Python的基础知识点总览-持续更新
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Python基础知识总览1. Python简介2. 安装与环境配置3. 基本语法3.1 变量与数据类型3.2 控制结构3.3 函数与模块3.4 文件操作 4. 面向对象编程(OOP&#…...
lambda表达式写java比较器
文章目录 示例 1:按字符串长度比较示例 2:按数字大小比较示例 3:按对象属性比较(简洁:推荐)示例 4:使用 Comparator 的静态方法示例 5:链式比较 在Java中,Comparator 是一…...
vim modeline
1. 什么是 Vim 模型行(modeline)? Vim 模型行是嵌入在文件中的特殊注释行,用于告诉 Vim 编辑器如何配置编辑选项。它的语法格式如下: # vim: 选项1值1:选项2值2:...它以 # vim: 开头(# 是注释符ÿ…...
【赵渝强老师】Spark RDD的依赖关系和任务阶段
Spark RDD彼此之间会存在一定的依赖关系。依赖关系有两种不同的类型:窄依赖和宽依赖。 窄依赖:如果父RDD的每一个分区最多只被一个子RDD的分区使用,这样的依赖关系就是窄依赖;宽依赖:如果父RDD的每一个分区被多个子RD…...
前缀和练习——洛谷P8218:求区间和
题目: 这道题很简单,直接根据题目无脑套公式 代码: #include<bits/stdc.h> using namespace std; const int N 1e5 9; using ll long long; ll a[N], perfix[N]; int main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);//取消同步输…...
Python----Python高级(并发编程:线程Thread,多线程,线程间通信,线程同步,线程池)
一、线程Thread 1.1、线程 线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;一个进程由一个或多个线程…...
八大排序算法细讲
目录 排序 概念 运用 常见排序算法 插入排序 直接插入排序 思想: 步骤(排升序): 代码部分: 时间复杂度: 希尔排序 思路 步骤 gap的取法 代码部分: 时间复杂度: 选择排序 直接选…...
组合总和III(力扣216)
这道题在回溯的基础上加入了剪枝操作。回溯方面我就不过多赘述,与组合(力扣77)-CSDN博客 大差不差,主要讲解一下剪枝(下面的代码也有回溯操作的详细注释)。我们可以发现,如果我们递归到后面,可能集合过小,无法满足题目…...
鲜牛奶订购系统的设计与实现
🍅点赞收藏关注 → 添加文档最下方联系方式咨询本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅 项目视频 基…...
python:内置函数与高阶函数
1.内置函数 abs() round() print(abs(-6))#求绝对值 print(round(3.56))#四舍五入运行结果 6 4 2.高阶函数 高阶函数:把一个函数作为参数传递给另外一个函数 实例一:绝对值加减法与四舍五入 def add_num(a,b):return abs(a)abs(b) print(add_num…...
postgresql 函数错误捕捉
BEGIN 逻辑块 EXCEPTION WHEN 错误码(如:unique_violation) or others THEN 异常逻辑块 END; 在PL/pgSQL函数中,如果没有异常捕获,函数会在发生错误时直接退出,与其相关的事物也会随之回滚。我们可以通过使…...
Java面试场景题分享
假设你在做电商秒杀活动,秒杀开始时,成千上万的用户同时请求抢购商品。你会如何设计系统来处理这些请求,确保库存不超卖 你如何保证库存的准确性? 这个问题引导你思考如何在高并发下确保库存更新的原子性,最直接的方式…...
ESP32开发学习记录---》GPIO
she 2025年2月5日,新年后决定开始充电提升自己,故作此记,以前没有使用过IDF开发ESP32因此新年学习一下ESP32。 ESPIDF开发环境配置网上已经有很多的资料了,我就不再赘述,我这里只是对我的学习经历的一些记录。 首先学习一个…...
【PyTorch】解决Boolean value of Tensor with more than one value is ambiguous报错
理解并避免 PyTorch 中的 “Boolean value of Tensor with more than one value is ambiguous” 错误 在深度学习和数据科学领域,PyTorch 是一个强大的工具,它允许我们以直观和灵活的方式处理张量(Tensor)。然而,即使…...
文件 I/O 和序列化
文件I/O C#提供了多种方式来读写文件,主要通过System.IO命名空间中的类来实现,下方会列一些常用的类型: StreamReader/StreamWriter:用于以字符为单位读取或写入文本文件。 BinaryReader/BinaryWriter:用于以二进制格…...
python中的lambda function(ChatGPT回答)
Python 中的 lambda 函数是一个匿名函数,它没有名字,通常用于定义简单的、一次性使用的函数。它可以接受任意数量的参数,但只能有一个表达式,并且该表达式的结果就是返回值。 lambda 函数的语法是: lambda 参数1, 参…...
智慧停车系统:不同规模停车场的应用差异与YunCitys解决方案
在智慧停车领域,不同规模停车场因自身特点,对智慧停车系统的需求和应用效果存在显著差异。云创智城凭借丰富的经验和先进的技术,为各类规模停车场打造了贴合需求的智慧停车系统,下面为您详细剖析。 小型停车场:精准高…...
AI软件栈:LLVM分析(三)
LLVM IR 文章目录 CFG线性IR 主要采用CFG与线性IR组合描述 CFG *关键在于基本块(Basic Block)的定义 线性IR *关键来自于SSA,单静态赋值...
C++Primer逻辑和关系运算符
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
从BIO到NIO:Java IO的进化之路
引言 在 Java 编程的世界里,输入输出(I/O)操作是基石般的存在,从文件的读取写入,到网络通信的数据传输,I/O 操作贯穿于各种应用程序的核心。BIO(Blocking I/O,阻塞式 I/O࿰…...
VMware Win10下载安装教程(超详细)
《网络安全自学教程》 从MSDN下载系统镜像,使用 VMware Workstation 17 Pro 安装 Windows 10 consumer家庭版 和 VMware Tools。 Win10下载安装 1、下载镜像2、创建虚拟机3、安装操作系统4、配置系统5、安装VMware Tools 1、下载镜像 到MSDN https://msdn.itellyou…...
Redis存储⑤Redis五大数据类型之 List 和 Set。
目录 1. List 列表 1.1 List 列表常见命令 1.2 阻塞版本命令 1.3 List命令总结和内部编码 1.4 List典型使用场景 1.4.1 消息队列 1.4.2 分频道的消息队列 1.4.3 微博 Timeline 2. Set 集合 2.1 Set 集合常见命令 2.2 Set 集合间命令 2.3 Set命令小结和内部编码 2.…...
3-kafka服务端之控制器
文章目录 概述控制器的选举与故障恢复控制器的选举故障恢复 优雅关闭分区leader的选举 概述 在Kafka集群中会有一个或多个broker,其中有一个broker会被选举为控制器(Kafka Controler),它负责管理整个集群中所有分区和副本的状态。…...
