element input组件自动失去焦点问题解决

最近在 Vue3 + ElementPlus 中,使用 el-input 组件时,如果设置了 v-model,那么在每次改变内容后后,input 会自动失去焦点,这样会导致用户无法输入多个字符。

一、问题原因

如上图所示,配置项的 Name 和 Code 都是使用 el-input 组件 v-for 遍历渲染的,都绑定了 v-model,而 :key 绑定的是对应的 Code 值。

所以,当 Code 改变后,当前所在的节点 key 值也改变了,根据 Vue 的 diff 算法,key 值改变后会导致节点重新渲染,这也就会导致 Code 在每输入一个字符后,input 自动失去焦点。

二、解决方案

解决方案很简单,只需要将 :key 绑定的值改为 index 即可,因为 index 对于当前这一组节点是不变的。

代码演示:

html 复制代码
<template>
  <div
      v-for="(item, index) in form.config"
      :key="index"
      class="flex items-center mb-5px p-10px pl-50px"
  >
    <div class="m-5px color-#999">Name:</div>
    <el-input class="w-139px" v-model="item.value" placeholder="请输入" />
    <div class="color-#999 m-5px">Code:</div>
    <el-input class="w-139px" v-model="item.key" placeholder="请输入" />
    <el-button
        @click="delConfig({ ...item, index })"
        link
        class="ml-10px"
        :disabled="form.config.length <= 1"
    >
      <el-icon size="16" color="#409eff"><IEpDelete /></el-icon>
    </el-button>
    <el-button
        link
        class="ml-10px"
        v-if="form.config.length - 1 === index"
        @click="addConfig"
    >
      <el-icon size="16" color="#409eff"><IEpPlus /></el-icon>
    </el-button>
  </div>
</template>

欢迎访问:天问博客

相关推荐
最好结果1 天前
ruoyi系统-vue-elementui 表格单元格点击复制功能实现:实践与问题解决
vue
xrkhy1 天前
ElementUI之Upload 上传的使用
前端·elementui
小菜全1 天前
使用UniApp实现下拉框和表格组件页面
开发语言·前端·javascript·elementui·前端框架·html
叫我阿柒啊2 天前
从Java全栈到前端框架:一次真实的面试对话与技术解析
java·javascript·typescript·vue·springboot·react·前端开发
工业互联网专业2 天前
基于Spark的新冠肺炎疫情实时监控系统_django+spider
python·spark·django·vue·毕业设计·源码·课程设计
SheldonChang2 天前
Onlyoffice集成与AI交互操作指引(Iframe版)
java·人工智能·ai·vue·onlyoffice·postmessage
lichong9512 天前
【混合开发】Android+Webview+VUE播放视频之视频解析工具mediainfo-Macos
android·macos·架构·vue·音视频·api·postman
PBitW3 天前
element plus 使用细节 (二)
前端·vue·element plus·element使用细节
叫我阿柒啊3 天前
从全栈开发到云原生:一位Java工程师的实战经验分享
java·spring boot·redis·云原生·kafka·vue·全栈开发