el-select可选择可搜索可输入新内容

需求:el-form-item添加el-select,并且el-select可选择可搜索可输入新内容,并且和其他的el-input做联动,如果是选择,那么el-input自动回填数据并且不可编辑,如果el-select输入新的内容,那么el-input也要输入新内容。

实现功能

  1. 可以搜索、选择、新增

1.效果

2.主要代码讲解

filterable:搜索

allow-create:允许用户创建新的内容

default-first-option:用户按下回车默认展示第一个匹配项

 @blur:失去焦点事件

 @change:选择值发生改变事件

@visible-change:下拉框出现或者隐藏触发

 ref="selectName":必须要设置ref来获取到选择的实例

这里如果是和我一样遍历出来的选择框那么需要再传递一个index

   <el-select:disabled="nameDisabled"v-model="item.name"placeholder="请选择名称"filterableref="selectName"allow-create@blur="nameBlur($event, index)"@visible-change="visibleNameChange($event, index)"@change="nameChange($event, index)"default-first-option><el-option v-for="item in equipNameOptions" :key="item.id" :label="item.name" :value="item.name"> </el-option></el-select>

 2.1失去焦点

  this.$set向响应式对象添加一个属性和值,这个就是在this.formTerminal中添加name属性和值,值就是输入框的内容

    nameBlur(e, index) {let value = e.target.value; // 输入框值if (value) {// this.$set向响应式对象添加一个属性和值,这个就是在this.formTerminal中添加name属性和值,值就是输入框的内容this.$set(this.formTerminal.attr[index], 'name', value);this.nameChange(value, index);}},

2.2值改变事件

 从匹配的选项中查找输入的内容是否相同,如果不相同则让性别重新输入并且取消禁用

    nameChange(val, index) {const foundItem = this.equipNameOptions.find((item) => item.name === val);this.isNameSelect = foundItem ? true : false;this.formTerminal.attr[index].age = foundItem ? foundItem.age : '';},

2.3 下拉框出现或者隐藏触发

必须要写这个,这个代码就是在下拉展开和关闭的时候触发失去焦点的事件,不然关闭和展开的时候不会触发失去焦点事件,导致错误

        visibleNameChange(val, i) {// console.log(i, this.$refs.selectName[i].selectedLabel, "下拉数据");if (!val) {let input = this.$refs.selectName[i].$children[0].$refs.input;input.blur();}}

3.完整代码

<template><div style="margin-top: 40px"><el-form class="terminal-form" ref="addOrEditSensorForm" :inline="true" :model="formTerminal" label-width="95px"><div class="terminal-box" v-for="(item, index) in formTerminal.attr" :key="index"><el-form-itemlabel="名称":prop="'attr.' + index + '.name'":rules="{required: true,message: '名称不能为空',trigger: 'blur'}"><el-select:disabled="nameDisabled"v-model="item.name"placeholder="请选择名称"filterableref="selectName"allow-create@blur="nameBlur($event, index)"@visible-change="visibleNameChange($event, index)"@change="nameChange($event, index)"default-first-option><el-option v-for="item in equipNameOptions" :key="item.id" :label="item.name" :value="item.name"> </el-option></el-select></el-form-item><el-form-item label="年龄" prop="age"><el-input v-model="item.age" placeholder="请输入终端名称" :disabled="isNameSelect"></el-input></el-form-item></div></el-form></div>
</template><script>
export default {data() {return {nameDisabled: false,formTerminal: {attr: [{name: '',age: ''}]},equipNameOptions: [{id: 1,name: '张三',age: 18},{id: 2,name: '李四',age: 32}],isNameSelect: false};},mounted() {},methods: {nameBlur(e, index) {let value = e.target.value; // 输入框值if (value) {// this.$set向响应式对象添加一个属性和值,这个就是在this.formTerminal中添加name属性和值,值就是输入框的内容this.$set(this.formTerminal.attr[index], 'name', value);this.nameChange(value, index);}},nameChange(val, index) {const foundItem = this.equipNameOptions.find((item) => item.name === val);this.isNameSelect = foundItem ? true : false;this.formTerminal.attr[index].age = foundItem ? foundItem.age : '';},visibleNameChange(val, i) {// console.log(i, this.$refs.selectName[i].selectedLabel, "下拉数据");if (!val) {let input = this.$refs.selectName[i].$children[0].$refs.input;input.blur();}}}
};
</script><style lang="scss" scoped></style>

文章到此结束,希望对你有所帮助~

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

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

相关文章

【NumPy】关于numpy.transpose()函数,看这一篇文章就够了

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

如何使用 CapSolver 扩展找到 Google reCAPTCHA 站点密钥?

网站安全性在当今至关重要&#xff0c;Google reCAPTCHA 作为防止垃圾邮件和滥用行为的前线防御系统起着关键作用。reCAPTCHA 站点密钥是确保网站交互由人类驱动的唯一标识符。了解如何找到这个密钥对于网站管理员和开发人员来说至关重要。 什么是 reCAPTCHA 站点密钥 reCAPT…

Unity开发——好用的数值概率公式

1、血量、伤害两个因素作用&#xff0c;击杀目标 正常状态下&#xff1a;hp - attackValue; 特殊状态下&#xff1a;attackValue *2; //伤害翻倍 如飞机/坦克大战中&#xff0c;击杀对方&#xff1b;受到伤害时&#xff0c;装备道具磨损失效&#xff1b; public int…

MySQL主从复制(一):主备一致

MySQL主备的基本原理 如图所示就是基本的主备切换流程&#xff1a; 在状态1中&#xff0c; 客户端的读写都直接访问节点A&#xff0c; 而节点B是A的备库&#xff0c; 只是将A的更新都同步过来&#xff0c; 到本地执行。 这样可以保持节点B和A的数据是相同的。 当需要切换的时候…

spark的简单学习一

一 RDD 1.1 RDD的概述 1.RDD&#xff08;Resilient Distributed Dataset&#xff0c;弹性分布式数据集&#xff09;是Apache Spark中的一个核心概念。它是Spark中用于表示不可变、可分区、里面的元素可并行计算的集合。RDD提供了一种高度受限的共享内存模型&#xff0c;即RD…

IDEA连接MySQL后如何管理数据库

上一节讲解了IDEA如何连接MySQL数据库管理系统&#xff0c;接下来我们就可以在IDEA里使用MySQL来管理数据库了。那么如果我们现在还没有创建需要的数据库怎么办&#xff1f;本节就来教大家如何在IDEA连接MySQL后管理数据库(创建/修改/删除数据库、创建/修改/删除表、插入/更新/…

电子招投标系统源码实现与立项流程:基于Spring Boot、Mybatis、Redis和Layui的企业电子招采平台

随着企业的快速发展&#xff0c;招采管理逐渐成为企业运营中的重要环节。为了满足公司对内部招采管理提升的要求&#xff0c;建立一个公平、公开、公正的采购环境至关重要。在这个背景下&#xff0c;我们开发了一款电子招标采购软件&#xff0c;以最大限度地控制采购成本&#…

【k8s】存储 pvc 参数列表

相关文章&#xff1a; 【K8s】初识PV和PVC 【k8s】存储 pv 参数列表 【k8s】存储 pvc 参数列表 1. pv概述 2. 参数列表 [rootpaas-controller-3:/home/ubuntu]$ kubectl explain pvc.spec KIND: PersistentVolumeClaim VERSION: v1RESOURCE: spec <Object>DESCRI…

【Vue2.x】props技术详解

1.什么是prop&#xff1f; 定义&#xff1a;组件标签上注册的一些自定义属性作用&#xff1a;向子组件传递数据特点 可以传递任意数量的prop可以传递任意类型的prop 2.prop校验 为了避免乱传数据&#xff0c;需要进行校验 完整写法 将之前props数组的写法&#xff0c;改为对象…

【SQL Server001】SQLServer2016常用函数实战总结(已更新)

1.熟悉、梳理、总结下SQL Server相关知识体系。 2.日常研发过程中使用较少&#xff0c;随着时间的推移&#xff0c;很快就忘得一干二净&#xff0c;所以梳理总结下&#xff0c;以备日常使用参考 3.欢迎批评指正&#xff0c;跪谢一键三连&#xff01; 总结源文件资源下载地址&am…

鸿蒙应用开发系列 篇六:鸿蒙系统应用生态与发布、推广

文章目录 系列文章开发过程的准备发布应用分发AGC发布应用(APK)应用资质审核要求发布HarmonyOS应用应用资质审核要求鸿蒙生态推广与变现系列文章 鸿蒙应用开发系列 篇一:鸿蒙系统概述 鸿蒙应用开发系列 篇二:鸿蒙系统开发工具与环境

Ubuntu切换内核版本

#安装内核安装工具 sudo apt-get install software-properties-common sudo add-apt-repository ppa:cappelikan/ppa sudo apt-get update sudo apt-get install mainline#安装指定内核版本(有些版本并不能安装成功) mainline install 5.14.10#更新GRUB配置 sudo update-grub#查…

如何查看CO凭证号码及明细

如何查看CO凭证号码及明细: 1)原始凭证上点菜单栏上的“环境”,选择“会计核算凭证”,控制凭证就是CO的凭证号码. 2)KSB5 查看CO凭证明细, 3)FB03处查看原始凭证&#xff0c;选菜单上环境--会计核算--控制凭证. CO凭证相关的主要表&#xff1a;COBK&#xff08;凭证头&#xff…

PE文件(六)新增节-添加代码

本节的目的是在所有节的空白区都不够存放我们要添加的代码时&#xff0c;教会我们新增一个足够大的节来添加代码 添加节 一.判断是否有足够的空间可以添加一个节表&#xff1a;新增节需要新增一个节表来记录此节信息 判断方法&#xff1a;SizeOfHeader - (DOS 垃圾数据 PE…

java常见算法

这里写目录标题 1.二分查询法2.冒泡排序算法3.快速查询算法 1.二分查询法 要求待查询的序列是有序数列, 每个取中间位置的值与目标值进行比较 如果目标值 > 中间位置, 目标值在右部分, 起始索引更新为mid 1如果目标值 中间位置, 则直接返回如果目标值 < 中间位置, 目…

全网最全爬取-b站爬取弹幕+评论之js逆向与xml降本增效

&#x1f31f; ❤️ 作者&#xff1a;yueji0j1anke 首发于公号&#xff1a;剑客古月的安全屋 字数&#xff1a;801 阅读时间: 10min 声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及…

【C语言深度解剖】(14):结构体内存对齐(详细配图讲解)

&#x1f921;博客主页&#xff1a;醉竺 &#x1f970;本文专栏&#xff1a;《C语言深度解剖》 &#x1f63b;欢迎关注&#xff1a;感谢大家的点赞评论关注&#xff0c;祝您学有所成&#xff01; ✨✨&#x1f49c;&#x1f49b;想要学习更多C语言深度解剖点击专栏链接查看&…

只有题目和摘要,能匹配到适合发发表的期刊吗

美国时间5月20日更新的Journal List中&#xff0c;SCIE期刊数据库剔除(Dropped)或停止检索(Ceased)了这2本期刊&#xff01;我们整理了期刊的详细信息供大家参考&#xff01; 01《EUROPEAN REVIEW FOR MEDICAL AND PHARMACOLOGICAL SCIENCES》 ISSN&#xff1a;1128-3602 出…

椋鸟C++笔记#3:类的默认成员函数

文章目录 类的默认成员函数构造函数&#xff08;Constructor&#xff09;构造函数的特点 析构函数 &#xff08;Destructor&#xff09;析构函数的特点 拷贝构造函数&#xff08;Copy Constructor&#xff09;拷贝构造函数的特点 运算符重载&#xff08;Operator Overloading&a…

Java中关于infinity的解释

在Java中&#xff0c;Infinity 不是一个直接的关键字或常量&#xff0c;但它是浮点数&#xff08;float 和 double&#xff09;可以表示的一个特殊值。具体来说&#xff0c;Infinity 通常与两个特殊的浮点值相关联&#xff1a;正无穷大 (POSITIVE_INFINITY) 和负无穷大 (NEGATI…