关于elementui和ant design vue无法禁止浏览器自动填充问题

以and design vue 为例:

图标用来显隐账号密码

html:

复制代码
 <a-form-model-item label="账号密码:" prop="password">
                  <a-input v-if="passwordTab" ref="passwordInput" v-model="form.password" type="text" style="width: 280px" @input="inputPassword">
                    <template #suffix>
                      <svg-icon v-if="!passwordTab" class="icons-dg" style="color: rgba(0, 0, 0, 0.65)" iconClass="dg-nosee" @click="changeVent('passwordTab',true)" />
                      <i v-else class="el-icon-view icons-dg" @click="changeVent('passwordTab',false)" />
                    </template>
                  </a-input>
                  <a-input v-else ref="passwordInput" v-model="password" type="text" style="width: 280px" @input="inputPassword">
                    <template #suffix>
                      <svg-icon v-if="!passwordTab" class="icons-dg" style="color: rgba(0, 0, 0, 0.65)" iconClass="dg-nosee" @click="changeVent('passwordTab',true)" />
                      <i v-else class="el-icon-view icons-dg" @click="changeVent('passwordTab',false)" />
                    </template>
                  </a-input>
                </a-form-model-item>

js:

会生成*号字符串并把原值v-model赋值给form.password表单。自行修改,我这边的表单结构是:

form:{ password,...more}

复制代码
    inputPassword(e) {
      const value = e.target.value // 当前的值
      const oldVal = this.form.password // 之前的值
      let passwordShow = '' // 当前输入下需要显示的值,及n个*的字符串
      let text = '' // 当前input事件输入的值,如果是删除就没有值
      // 当前input指针的位置,不一定是在最后
      const startPoint = e.target.selectionStart
      const endPoint = e.target.selectionEnd
      if (!value) {
        this.form.password = ''
        this.password = ''
        return
      }
      let leftNum = 0 // 输入后左边保留多少
      let rightNum = 0 // 输入后右边保留多少
      let isLeft = true
      for (let i = 0; i < value.length; i++) {
        passwordShow += '*'
        if (value[i] == '*') {
          if (isLeft) {
            leftNum++
          } else {
            rightNum++
          }
          continue
        }
        text += value[i]
        isLeft = false
      }

      if (text) {
        this.form.password =
          oldVal.slice(0, leftNum) +
          text +
          oldVal.slice(oldVal.length - rightNum)
      } else {
        this.form.password =
          oldVal.slice(0, startPoint) +
          oldVal.slice(oldVal.length - leftNum - rightNum + startPoint)
      }
      this.password = passwordShow
      this.$nextTick(() => {
        e.target.setSelectionRange(startPoint, startPoint)
      })
    },

这个是把显示隐藏账号密码做个false和true处理

复制代码
 changeVent(type, val) {
      this[type] = val
    },

data对象:

复制代码
data(){
    return{
      passwordTab: false,
      password: '',
      form:{
      password:''
}
}
}

效果:

相关推荐
To_OC3 小时前
LC 49 字母异位词分组:想到哈希表很简单,选对 key 才是精髓
javascript·算法·leetcode
kyriewen6 小时前
用了半年 Claude Code 后,我尝试关掉它写了一周代码——结果比想象中严重
前端·javascript·ai编程
山河木马8 小时前
矩阵专题0-webGL中的矩阵
javascript·webgl·计算机图形学
徐小夕8 小时前
万字拆解 JitWord:企业级实时协同文档底层架构 + 大模型 AI 融合完整实践
前端·vue.js·github
Asize8 小时前
多模态生图:从 Vite 工程化到前端调用 Qwen Image
javascript·人工智能·后端
陳陈陳8 小时前
从Token到Embedding:一篇文章搞懂大模型的「文字数学变形记」
前端·javascript·ai编程
用户938515635078 小时前
从 O(n²) 到 O(nlogn):一文读懂快速排序的“快”与“妙”
javascript·算法
橘子星8 小时前
LLM 无状态架构实践:从原理到代码落地
前端·javascript·人工智能
用户83134859306989 小时前
Cesium实现雾气效果:按钮一键控制打开/关闭雾气效果,滑块拖动实时控制雾气浓度
vue.js·cesium
To_OC9 小时前
手写快排次次翻车?别死背快排模板了,这才是面试官想听的底层逻辑
javascript·算法·排序算法