使用带逗号分割的字符串填充el-input-tag

用户在文本框中输入1,2,3,4,5 ,然后直接转变成tag,如果输入错误,可以直接点击叉号关闭当前,前端代码实现如下:

<template><el-input-tagref="inputRef"tag-type="primary"v-model="obj.model"clearable@paste.native="handleInput":placeholder="props.prop.placeholder || props.prop.label || ''"></el-input-tag>
</template><script setup>import { nextTick, ref, defineModel, defineEmits, reactive } from 'vue'import { noEmptyArray } from '@/common/utils'const name = 'tl-input-tags'const model = defineModel([])const inputValue = ref('')const inputVisible = ref(false)const inputRef = ref('')const emit = defineEmits(['valueChange'])const obj = reactive({model: [],})const props = defineProps({prop: { type: Object, default: () => ({}) }, //属性对象})// 输入框输入事件const handleInput = (e) => {e.preventDefault()const clipboardData = e.clipboardData || window.clipboardDataconst pastedText = clipboardData.getData('text/plain')const rows = pastedText.trim()                 // 去除首尾空白.split(/\r\n|\n|\r|,|,/)    // 处理不同系统的换行符if (noEmptyArray(rows)) {if (noEmptyArray(obj.model)) {obj.model = [...obj.model, ...rows]} else {obj.model = rows}}emit('valueChange', model.value)}const handleTagAdd = (val) => {const elInput = inputRef.value?.$el.querySelector('.el-input-tag__input')elInput.value = ''}// 显示输入框const showInput = () => {inputVisible.value = truenextTick(() => {inputRef.value?.input?.focus()})}// 删除一个tagconst handleClose = (i) => {model.value.splice(i, 1)nextTick(() => {emit('valueChange', model.value)})}// 确认输入框内容const handleInputConfirm = (e) => {e.preventDefault()if (inputValue.value) {let newTag = inputValue.value.trim().split(',')if (noEmptyArray(model.value)) {model.value.push(...newTag)} else {model.value = newTag}}inputVisible.value = falseinputValue.value = ''nextTick(() => {emit('valueChange', model.value)})}//按下ctrl+v,只能在https下使用const handleInputKeydown = async(e) => {e.preventDefault()const text = await navigator.clipboard.readText()if (text) {let newTag = text.split(',')if (noEmptyArray(model.value)) {model.value.push(...newTag)} else {model.value = newTag}}inputVisible.value = falseinputValue.value = ''nextTick(() => {emit('valueChange', model.value)})}
</script><style lang="scss" scoped>
</style>

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

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

相关文章

时间序列异常检测:MSET-SPRT组合方法的原理和Python代码实现

在异常检测领域,尤其针对工业机械、核反应堆和网络安全等复杂系统,传统方法往往难以有效处理高维度且相互关联的数据流。多元状态估计技术(MSET) 与序贯概率比检验(SPRT) 的组合方法在此类场景中展现出显著优势。 MSET-SPRT是一种结合机器学习状态估计与统计假设检验的混合技…

windows 查看控制台编码

在 powershell 上 [System.Text.Encoding]::Default在 cmd 上 chcp

vue+nuxt项目安装sass时报错:error Cant add nuxt-app: invalid package version

搭建vue+nuxt项目时候,需要用到sass,执行yarn add sass --dev时,报错:error Cant add "nuxt-app": invalid package version。如图: 解决方法: 1.执行命令:yarn set version stable 2.执行命令,再次安装sass: yarn add sass --dev方法二: 1.执行命令:npm…

直击痛点!精准配药零误差!PROFINET转MODBUS网关助力药房升级

在医疗安全备受关注的今天,医院药房配液中心的每一滴药液、每一张标签都关乎患者的生命健康。传统配液流程中,设备间协议不兼容导致的数据传输延迟、标签信息错位等问题,成为药房效率与安全的“隐形风险”。如何打破设备孤岛,实现精准、高效的智能化配液管理?稳联技术 PRO…

MCR08-ASEMI智能家居专用MCR08

MCR08-ASEMI智能家居专用MCR08编辑:LL MCR08-ASEMI智能家居专用MCR08 型号:MCR08 品牌:ASEMI 封装:TO-92 阻断电压:600V 通态电流:0.8A 类型:单向可控硅 工作温度:-40℃~150℃ 超低触发电流,节能更高效‌MCR08采用先进的半导体工艺,触发电流低至10μA以下,较传统可控…

在 Windows 环境下使用 VSCode 和 TinyGo 语言开发 ESP8266(NodeMcu)

1. 安装Go 2. 安装TinyGo,并添加环境变量 3. VSCode配置,安装插件,选择设备 package mainimport ("machine""time" )func main() {led := machine.LEDled.Configure(machine.PinConfig{Mode: machine.PinOutput})for {println("Hello, World"…

windows-web2

windows-web2 挑战内容 前景需要:小李在某单位驻场值守,深夜12点,甲方已经回家了,小李刚偷偷摸鱼后,发现安全设备有告警,于是立刻停掉了机器开始排查。 这是他的服务器系统,请你找出以下内容,并作为通关条件: 1.攻击者的IP地址(两个)? 2.攻击者的webshell文件名? …

【入门】 Python中return 和 print 区别

return 和 print 是 Python 中两个完全不同的概念,主要区别如下: return 的作用用于函数中,表示函数的返回值。 执行 return 后,函数会立即终止,并将指定的值返回给调用者。 如果不写 return,函数默认返回 None。  def add(a, b): return a + b # 返回计算结果 res…

thinkphp6---宝塔nginx-websocket连接wss

基础环境:thinkphp6-https-ssl+nginx 搭建一个websocket其实非常简单,可以参考我的这篇博文:https://www.cnblogs.com/e0yu/p/18740184可以参考:按照这个流程使用在http的网站里面接入,使用 ws 是没有问题的,但是实际的生成应用里面,使用的https,那么就要使用 wss 不然…

3.14饮料自动售货机

实现步骤创建VendingMachine类实现饮料选择逻辑实现代码(Java Swing)javaimport javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;public class VendingMachineGUI extends JFrame {private JButton orangeJuic…

【一步步开发AI运动APP】三、使用相机组件抽帧

之前我们为您分享了【一步步开发AI运动小程序】开发系列博文,通过该系列博文,很多开发者开发出了很多精美的AI健身、线上运动赛事、AI学生体测、美体、康复锻炼等应用场景的AI运动小程序;为了帮助开发者继续深耕AI运动领域市场,今天开始我们将为您分享新系列【一步步开发AI…

Docker Desktop,docker save 报错:Error response from daemon: write xxx : no space left on device

前言 在使用 docker save 时报错:docker save lanling-text-trainer:v1 -o lanling-text-trainer.tar Error response from daemon: write /var/lib/docker/tmp/docker-export-1292051631/34bda97aaedafa599cb48e60f010ce2e474f725817509a2153979af694021656/layer.tar: no sp…