Element Plus 动态编辑标签Tag使用@keyup.enter与@Blur冲突问题,

这是官方文档示例代码,文档具体链接https://element-plus.org/zh-CN/component/tag.html
问题描述: 发现存在使用@keyup.enter与@Blur冲突问题, @keyup.enter(就是按回车键)发现handleInputConfirm方法被执行了两次,下面是问题代码

<template>
  <div class="flex gap-2">
    <el-tag
      v-for="tag in dynamicTags"
      :key="tag"
      closable
      :disable-transitions="false"
      @close="handleClose(tag)"
    >
      {{ tag }}
    </el-tag>
    <el-input
      v-if="inputVisible"
      ref="InputRef"
      v-model="inputValue"
      class="w-20"
      size="small"
     
@keyup.enter="handleInputConfirm"
     
@blur="handleInputConfirm"
    />
    <el-button v-else class="button-new-tag" size="small" @click="showInput">
      + New Tag
    </el-button>
  </div>
</template>

<script lang="ts" setup>
import { nextTick, ref } from 'vue'
import { ElInput } from 'element-plus'

const inputValue = ref('')
const dynamicTags = ref(['Tag 1', 'Tag 2', 'Tag 3'])
const inputVisible = ref(false)
const InputRef = ref<InstanceType<typeof ElInput>>()

const handleClose = (tag: string) => {
  dynamicTags.value.splice(dynamicTags.value.indexOf(tag), 1)
}

const showInput = () => {
  inputVisible.value = true
  nextTick(() => {
    InputRef.value!.input!.focus()
  })
}

const handleInputConfirm = () => {
  if (inputValue.value) {
    dynamicTags.value.push(inputValue.value)
  }
  inputVisible.value = false
  inputValue.value = ''
}
</script>

 

(画外音: 本来想试着建议反馈的, 结果发现他们提示无视代码使用上的issue问题, 我一看这个案例, 应该也是代码使用上的问题, 就不填他的反馈表单, 又长又臭, 太难填了)

在element-plus.org这个指导使用组件的网站中, 我尝试使用了这个动态编辑标签组件,
因为代码存在问题,  本是菜鸟的我,   硬生生记住@Blur与@
keyup.enter  的使用方法 。
@Blur是鼠标在焦点以外的地方(一般是点击输入框以外的地方)触发一次,    这里原代码没有问题
@keyup.enter(就是按一下回车键)会导致@Blur也在后面执行一遍, 这就挺有意思的, 执行两次,后一次执行返回一个空的值, 但他的代码视觉上使用似乎是没有问题的,  这里归功于他加了对inputValue.value的if判断,所以dynamicTags数组没有添加一个空值做标签。

if (inputValue.value) {
    dynamicTags.value.push(inputValue.value)
}

但是因为代码问题, if里面没有收到影响, 但if外面会执行二遍, 

修改方法: 停用同一个handleInputConfirm, 将 @keyup.enter指向handEnter, 代码如下:

const handEnter = (event) => {

  event.target.blur()

}

  <el-input

                v-if="inputVisible"

                ref="InputRef"

                v-model="inputValue"

                class="w-20"

                size="small"

                @keyup.enter="handEnter"

                @blur="handleInputConfirm"

              />

handleInputConfirm方法可以略微修改为,看看是否会出现两次提示框

const handleInputConfirm = () => {

  console.log(inputValue.value)

  if (inputValue.value === '') {

  alert(inputValue.value)

  }

console.log('我被执行了多少次')

  if (inputValue.value) {

    //先判断标签是否只为空格,

    /**dynamicTags是数组,添加数组元素用push

*trim()去除两端空白

*/

    dynamicTags.value.push(inputValue.value.trim())

    //这里可以赋值给表单form的biaoqianzu数组属性

    form.biaoqianzu = dynamicTags.value

  }

  console.log(dynamicTags.value)

  inputVisible.value = false

  inputValue.value = ''

}

这个方法有不足之处清之处
参考文章来源:

vue 元素上同时绑定了keyup.enter和blur事件,会触发两次的解决方案_@keyup.enter 触发两次的情况-CSDN博客

element-plus Tag组件
https://element-plus.org/zh-CN/component/tag.htmlicon-default.png?t=N7T8https://element-plus.org/zh-CN/component/tag.html

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

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

相关文章

PS5测试更新推送自适应充电功能:自带充电器码

原标题&#xff1a;PS5 更新推送自适应充电功能&#xff1a;仅适用于新型号 易采游戏网7月26日消息&#xff1a;近年来&#xff0c;游戏界的科技进步日新月异&#xff0c;各大厂商不断推出新的功能和技术来吸引玩家。作为游戏机市场的领导者之一&#xff0c;索尼的PlayStation…

Docker Minio rclone数据迁移

docker minio进行数据迁移 使用rclone进行数据迁移是一种非常灵活且强大的方式&#xff0c;特别是在处理大规模数据集或跨云平台迁移时。rclone是一款开源的命令行工具&#xff0c;用于同步文件和目录到多种云存储服务&#xff0c;包括MinIO。下面是使用rclone进行数据迁移至Mi…

学习型组织:知识创造的 SECI 螺旋模型 —— 隐性知识和显性知识的转换

《创造知识的企业》的日本学者野中郁次郎用了 30 多年的时间跟踪日本企业的变化&#xff0c;揭示日本企业成功的奥秘。 在野中之前和之后&#xff0c;也有不少学者聚焦日本&#xff0c;但是&#xff0c;多数人看到的&#xff0c;只是优良的生产技术&#xff0c;企业和顾客、供…

打卡Datawhale第一天!!!

最近参加了Datawhale的一个活动学习一些有趣的知识。 官方发的教程还是挺详细的嘛&#xff0c;跟着官方教程走&#xff0c;基本没什么错误 跑模型中... 跑完咯...gpu跑得就是快 等待评分... 最后结果&#xff1a; 总结&#xff1a;这次都是跟着教程来走的 &#xff0c;希望在后…

力扣高频SQL 50题(基础版)第十八题

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第十八题1633. 各赛事的用户注册率题目说明思路分析实现过程准备数据实现方式结果截图 力扣高频SQL 50题&#xff08;基础版&#xff09;第十八题 1633. 各赛事的用户注册率 题目说明 用户表&#xff1a; Users --…

柯达sd卡数据丢失怎么办?分享有效数据恢复方法

随着科技的进步&#xff0c;数码相机已成为我们生活中不可或缺的一部分&#xff0c;而柯达作为摄影界的知名品牌&#xff0c;其相机及配件更是广受欢迎。然而&#xff0c;在日常使用中&#xff0c;难免会遇到数据丢失的情况&#xff0c;特别是SD卡中的数据丢失&#xff0c;常常…

AJAX-XMLHttpRequest 详解

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 前言 XMLHttpRequest 概述 主要用途 工作流程 示例代码 GET 请求示例 POST 请求示例 注意事项 工作…

API签名认证

前言&#xff08;项目背景&#xff09;&#xff1a; 这个API签名认证是API开放平台得一个重要环节&#xff0c;我们知道&#xff0c;这个API开发平台&#xff0c;用处就是给客户去调用现成得接口来完成某些事情得。 在讲API签名认证之前&#xff0c;我们先模拟一个场景并且介绍…

产业分析三部曲:如何快速完成存客产业识别、产业分布分析、区域产业分析?

2024年7月15日至18日&#xff0c;中国共产党第二十届中央委员会第三次全体会议在北京举行&#xff0c;审议通过了《中共中央关于进一步全面深化改革、推进中国式现代化的决定》。 《决定》提出&#xff0c;深化国资国企改革&#xff0c;完善管理监督体制机制&#xff0c;推动国…

Mistral新旗舰决战Llama 3.1,最强开源Large 2 123B,扛鼎多语言编程全能王

【新智元导读】紧跟着Meta的重磅发布&#xff0c;Mistral Large 2也带着权重一起上新了&#xff0c;而且参数量仅为Llama 3.1 405B的三分之一。不仅在编码、数学和多语言等专业领域可与SOTA模型直接竞争&#xff0c;还支持单节点部署。 昨天正式发布的Llama 3.1模型&#xff0…

react中路由跳转以及路由传参

一、路由跳转 1.安装插件 npm install react-router-dom 2.路由配置 路由配置&#xff1a;react中简单的配置路由-CSDN博客 3.实现代码 // src/page/index/index.js// 引入 import { Link, useNavigate } from "react-router-dom";function IndexPage() {const …

CSS常见属性详解——内边距与外边距

内边距与外边距 内边距 外边距 应用场景 在网页排版布局时&#xff0c;我们经常会希望元素与元素之间有一定的间距&#xff0c;此时我们可能会用到CSS的外边距或内边距属性&#xff0c;这两个属性都能让元素之间产生距离&#xff0c;那么他们之间有什么不同呢&#xff1f; …

Nginx系列-10 realIp模块使用

背景 Nginx对每个模块都有说明文档&#xff0c;可参考:https://nginx.org/en/docs/ 当请求被代理后&#xff0c;真实客户端相对服务器被隐藏&#xff0c;即服务端无法判断HTTP消息来源。 如上图所示&#xff0c;IP分别为100.100.100.1和100.100.100.2的两个客户端向服务器200.…

08 字符串和字节串

使用单引号、双引号、三单引号、三双引号作为定界符&#xff08;delimiter&#xff09;来表示字符串&#xff0c;并且不同的定界符之间可以相互嵌套。 很多内置函数和标准库对象也都支持对字符串的操作。 x hello world y Python is a great language z Tom said, "Le…

centos7 mysql 基本测试(6)主从简单测试

centos7 xtrabackup mysql 基本测试&#xff08;6&#xff09;主从简单测试 mysql -u etc -p 1234aA~1 参考&#xff1a; centos7 时区设置 时间同步 https://blog.csdn.net/wowocpp/article/details/135931129 Mysql数据库&#xff1a;主从复制与读写分离 https://blog.csd…

HTML常见标签——超链接a标签

一、a标签简介 二、a标签属性 href属性 target属性 三、a标签的作用 利用a标签进行页面跳转 利用a标签返回页面顶部以及跳转页面指定区域 利用a标签实现文件下载 一、a标签简介 <a>标签用于做跳转、导航&#xff0c;是双标签&#xff0c;记作<a></a>&#…

移动式气象站:科技赋能,精准预报的新篇章

在这个气候多变、极端天气频发的时代&#xff0c;气象信息的准确性与及时性成为了社会各界关注的焦点。从农业生产到城市规划&#xff0c;从航空航海到日常生活&#xff0c;气象服务无处不在&#xff0c;其重要性不言而喻。而在这场气象科技的变革中&#xff0c;移动式气象站以…

数据结构(Java):Map集合Set集合哈希表

目录 1、介绍 1.1 Map和Set 1.2 模型 2、Map集合 2.1 Map集合说明 2.2 Map.Entry<K&#xff0c;V> 2.3 Map常用方法 2.4 Map注意事项及实现类 3、Set集合 3.1 Set集合说明 3.2 Set常用方法 3.3 Set注意事项及其实现类 4、TreeMap&TreeSet 4.1 集合类TreeM…

「AI绘画Stable Diffusion 零基础入门 」AI 绘画SD原理与工具介绍,万字详解新手入门必看!

大家好&#xff0c;我是设计师阿威 AI 绘画原理 想要入门 AI 绘画&#xff0c;首先需要了解它的原理是什么样的。 其实很早就已经有人基于深度学习模型展开了对图像生成的研究了&#xff0c;但在那时&#xff0c;生成的图像分辨率和内容都非常抽象。 直到近两年&#xff0c…

【数据结构-前缀和】力扣3152.特殊数组II

如果数组的每一对相邻元素都是两个奇偶性不同的数字&#xff0c;则该数组被认为是一个 特殊数组 。 周洋哥有一个整数数组 nums 和一个二维整数矩阵 queries&#xff0c;对于 queries[i] [fromi, toi]&#xff0c;请你帮助周洋哥检查子数组 nums[fromi…toi] 是不是一个 特殊…