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

element-plus中,vue3项目,el-input密码框禁止浏览器自动弹出浏览器历史密码提示框

原代码(密码框是text框):

<el-form-item label="用户名" :label-width="formLabelWidth" v-if="!localOrhuawei" prop="userName"><el-input v-model="formDialog.userName" /></el-form-item><el-form-item label="密码" :label-width="formLabelWidth" v-if="!localOrhuawei" prop="passWord"><el-input v-model="formDialog.passWord" /></el-form-item>

现加需求:el-input改为密码框,但要求el-input密码框禁止浏览器自动弹出浏览器历史密码提示框

<el-form-item label="用户名" :label-width="formLabelWidth" v-if="!localOrhuawei" prop="userName"><el-input v-model="formDialog.userName" /></el-form-item><el-form-item label="密码" :label-width="formLabelWidth" v-if="!localOrhuawei" prop="passWord"><el-input v-model="formDialog.passWord" show-password /></el-form-item>

效果:当密码有值时正常显示,当密码无值时就会自动弹出历史的用户密码列表弹框。

那如何不显示历史记录弹框呢?

想到通过v-if去控制显示密码框,代码如下:

<el-form-item label="密码" :label-width="formLabelWidth" v-if="!localOrhuawei" prop="passWord"><el-input  ref="passwordInput" v-model="formDialog.passWord" v-if="passwordType === 'password'" type="password" show-password autocomplete="new-password"/><el-input v-elseref="passwordInput"v-model="formDialog.passWord" type="text"autocomplete="off"/></el-form-item>import { reactive, ref, onMounted, watch,nextTick } from "vue";const passwordType = ref('text');
const passwordInput = ref();watch(() => formDialog.passWord,(nv,ov) => {if(!nv){passwordType.value = 'text'}else{passwordType.value = 'password'}}
);

 效果:当清空值时,确实不会再弹出浏览器的历史记录列表了,但我发现当我输入一个数字后,input框就自动失焦了,但如果再次聚焦就可以连续输入了。

根本原因分析

  1. 当密码清空时,组件从密码类型切换到文本类型(重新渲染)

  2. 输入第一个字符时触发 v-model 更新,值不为空又切换回密码类型(再次重新渲染)

  3. 每次重新渲染都会导致焦点丢失。

解决方式:在监听值改变后,修改密码框类型后,直接聚焦即可解决问题;

watch(() => formDialog.passWord,(nv,ov) => {if(!nv){passwordType.value = 'text'}else{passwordType.value = 'password'}//切换input框类型后,重新聚焦nextTick(() => {passwordInput.value?.focus()})}
);

 

http://www.xdnf.cn/news/4697.html

相关文章:

  • 华清远见陶金华受邀武汉大学讲座: 共话“算力下沉”时代,赋能AloT技术新未来
  • 【大模型面试每日一题】Day 11:参数高效微调方法(如LoRA、Adapter)的核心思想是什么?相比全参数微调有何优缺点?
  • 【行业】一些名词
  • 双11美妆数据分析
  • 双指针思路
  • 使用频域变换轻松压缩kv-cache
  • pip安装包时出现网络问题的坑
  • Nvidia Orin 安装onnxruntime-gpu
  • 中科固源:蓝牙协议栈架构与核心协议深度剖析
  • C语言——操作符
  • VSCode怎么同时打开多个页面
  • 分区器(1)
  • 测度论——测度论思想的引出
  • Linux电源管理(7)_Wakeup events framework
  • 动态规划--线性dp
  • leeCode算法之独一无二出现次数
  • 【HarmonyOS 5】鸿蒙Web组件和内嵌网页双向通信DEMO示例
  • 晶体布局布线
  • 【CUDA C实战演练】CUDA介绍、安装、C代码示例
  • 电商双十一美妆数据分析(代码)
  • MapReduce中的分区器
  • Ceph 原理与集群配置
  • 网络技术基础,NAT,桥接,交换机,路由器
  • 关于Stream
  • paddle ocr 或 rapid ocr umi ocr 只识别了图片的下部分内容 解决方案
  • 如何避免“救火式管理”消耗精力
  • EEG设备的「减法哲学」:Mentalab Explore如何用8通道重构高质量脑电信号?
  • C++20新特新——02特性的补充
  • 数字乡村综合管理与服务平台软件需求规格说明文档
  • Office365功能特点