Element-ui Select选择器自定义搜索方法

news2024/11/19 4:48:02

效果图

在这里插入图片描述

具体实现

<template>
  <div class="home">
    <el-select
      ref="currencySelect"
      v-model="currency"
      filterable
      :spellcheck="false"
      placeholder="请选择"
      :filter-method="handleCurrencyFilter"
      @change="handleCurrencyChange"
      @visible-change="handleCurrencyVisible"
      style="width: 240px;"
    >
      <el-option
        v-for="(item, index) in currencyOptions"
        :key="index"
        :label="item.label"
        :value="item.label"
      >
        <span style="float: left">{{ item.label }}</span>
        <span
          v-if="item.value !== ''"
          style="float: right; color: #8492a6; font-size: 13px;margin-left: 15px;">
          {{ item.nation }}
        </span>
      </el-option>
    </el-select>
  </div>
</template>

<script setup>
import { ref, reactive, computed, onMounted } from "vue"
let currency = ref('')
let currencyOld = ref('')
let flag = ref(false)
const currencySelect = ref(null)
let dataList = reactive([
  { label: 'CNY', value: 'CNY', nation: '中国'},
  { label: 'USD', value: 'USD', nation: '美国'},
  { label: 'EUR', value: 'EUR', nation: '欧盟'},
  { label: 'JPY', value: 'JPY', nation: '日本'},
  { label: 'GBP', value: 'GBP', nation: '英国'},
  { label: 'AUD', value: 'AUD', nation: '澳大利亚'},
  { label: 'CHF', value: 'CHF', nation: '瑞士'},
  { label: 'CAD', value: 'CAD', nation: '加拿大'},
  { label: 'NZD', value: 'NZD', nation: '新西兰'},
  { label: 'SGD', value: 'SGD', nation: '新加坡'},
  { label: 'HKD', value: 'HKD', nation: '香港'},
  { label: 'TWD', value: 'TWD', nation: '台湾'},
  { label: 'SEK', value: 'SEK', nation: '瑞典'},
  { label: 'DKK', value: 'DKK', nation: '丹麦'},
  { label: 'NOK', value: 'NOK', nation: '挪威'},
  { label: 'HUF', value: 'H}UF', nation: '匈牙利'},
  { label: 'PLN', value: 'PLN', nation: '波兰'},
  { label: 'RUB', value: 'RUB', nation: '俄罗斯'},
  { label: 'BRL', value: 'BRL', nation: '巴西'},
  { label: 'MXN', value: 'MXN', nation: '墨西哥'},
  { label: 'ZAR', value: 'ZAR', nation: '南非'},
  { label: 'TRY', value: 'TRY', nation: '土耳其'},
  { label: 'INR', value: 'INR', nation: '印度'},
  { label: 'IDR', value: 'IDR', nation: '印度尼西亚'},
  { label: 'MYR', value: 'MYR', nation: '马来西亚'},
  { label: 'PHP', value: 'PHP', nation: '菲律宾'},
  { label:'THB', value: 'THB', nation: '泰国'},
  { label: 'KRW', value: 'KRW', nation: '韩国'},
  { label: 'VND', value: 'VND', nation: '越南'},
  { label: 'HKD', value: 'HKD', nation: '香港'},
  { label: 'KPW', value: 'KPW', nation: '朝鲜'}
])
let currencyOptions = ref([])

const getData = () => {
  currencyOptions.value = dataList
}
// 自定义搜索方法
const handleCurrencyFilter = (query) => {
  // 如果搜索关键字为空,则恢复搜索前的值
  currency.value = query ? query : currencyOld.value
  currencyOptions.value = dataList.filter(v => {
    return v.label.indexOf(query.toUpperCase()) > -1 || v.nation.indexOf(query) > -1
  })
}
// 选中值发生变化时触发
const handleCurrencyChange = (val) => {
  flag.value = true
  currencyOld.value = val
  currencySelect.value.blur()
  // 延时,避免搜索后下拉列表恢复全量数据时高度闪现
  setTimeout(() => {
    currencyOptions.value = [...dataList]
  }, 150)
}
// 下拉框出现/隐藏时触发
const handleCurrencyVisible = (visible) => {
  if (!visible) {
    // 下拉框隐藏时, 如果没有选择新的值则恢复搜索前的值
    if (!flag.value) currency.value = currencyOld.value
    currencySelect.value.blur()
  } else {
    flag.value = false
  }
}
onMounted(() => {
  getData()
})
</script>
<style scoped lang="less">
.home {
  display: flex;
  justify-content: center;
}
</style>

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

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

相关文章

Linux debian系统安装ClamTk开源图形用户界面(GUI)杀毒软件

一、ClamTk简介 ClamTk 是一个基于 ClamAV 的开源图形用户界面&#xff08;GUI&#xff09;杀毒软件。它使用 GTK2-Perl 脚本构建而成&#xff0c;支持32位与64位操作系统。ClamTk 提供了一个直观的用户界面&#xff0c;使得用户无需深入了解命令行即可完成大部分操作。它具备…

MIT6.5840 Lab 1: MapReduce(6.824)

结果 介绍 在本实验中&#xff0c;您将构建一个MapReduce系统。您将实现一个调用应用程序Map和Reduce函数并处理文件读写的工作进程&#xff0c;以及一个将任务分发给工作进程并处理失败的工作进程的协调进程。您将构建类似于MapReduce论文的东西。&#xff08;注意&#xff1a…

Kafka进阶_1.生产消息

文章目录 一、Controller选举二、生产消息2.1、创建待发送数据2.2、创建生产者对象&#xff0c;发送数据2.3、发送回调2.3.1、异步发送2.3.2、同步发送 2.4、拦截器2.5、序列化器2.6、分区器2.7、消息可靠性2.7.1、acks 02.7.2、acks 1(默认)2.7.3、acks -1或all 2.8、部分重…

SpringBoot多环境配置的实现

前言 开发过程中必然使用到的多环境案例&#xff0c;通过简单的案例分析多环境配置的实现过程。 一、案例 1.1主配置文件 spring:profiles:active: prod server:port: 80801.2多环境配置文件 开发环境 blog:domain: http://localhost:8080测试环境 blog:domain: https:/…

鸿蒙HarmonyOS 地图定位到当前位置 site查询等操作

应用服务Map使用 地图定位 地点查询及导航 周边查询 点位标记定义等 地图定位 前提地图已经能正常显示&#xff0c;若不能显示请大家参考之前的那篇如何显示地图的博文 地图相关的api 位置效果图&#xff1a; module.json5配置权限 "requestPermissions": [{&…

AntFlow 0.11.0版发布,增加springboot starter模块,一款设计上借鉴钉钉工作流的免费企业级审批流平台

AntFlow 0.11.0版发布,增加springboot starter模块,一款设计上借鉴钉钉工作流的免费企业级审批流平台 传统老牌工作流引擎比如activiti,flowable或者camunda等虽然功能强大&#xff0c;也被企业广泛采用&#xff0c;然后也存着在诸如学习曲线陡峭&#xff0c;上手难度大&#x…

Timeline动画「硬切」的问题

1&#xff09;Timeline动画「硬切」的问题 2&#xff09;移动平台纹理压缩格式选择ASTC&#xff0c;美术出图还需遵守POT吗 3&#xff09;如何去掉DOTS Unity.Entities.Graphics创建的BatchRendererGroup的UI相机回调 4&#xff09;Timeline播放动画会产生位移的问题 这是第409…

《设计模式》创建型模式总结

目录 创建型模式概述 Factory Method: 唯一的类创建型模式 Abstract Factory Builder模式 Prototype模式 Singleton模式 最近在参与一个量化交易系统的项目&#xff0c;里面涉及到用java来重构部分vnpy的开源框架&#xff0c;因为是框架的搭建&#xff0c;所以会涉及到像…

【论文阅读】主动推理:作为感知行为的理论

文章目录 主动推理&#xff1a;作为感知行为的理论摘要1.引言2. 主动推理的概念和历史根源3. 主动推理的规范视角—以及它的发展历程 未完待续 主动推理&#xff1a;作为感知行为的理论 Active inference as a theory of sentient behavior 摘要 这篇文章综述了主动推理的历…

React--》如何高效管理前端环境变量:开发与生产环境配置详解

在前端开发中&#xff0c;如何让项目在不同环境下表现得更为灵活与高效&#xff0c;是每个开发者必须面对的挑战&#xff0c;从开发阶段的调试到生产环境的优化&#xff0c;环境变量配置无疑是其中的关键。 env配置文件&#xff1a;通常用于管理项目的环境变量&#xff0c;环境…

【工具插件类教学】在 Unity 中使用 iTextSharp 实现 PDF 文件生成与导出

目录 一、准备工作 1. 安装 iTextSharp 2. 准备资源文件 二、创建 ExportPDFTool 脚本 1、初始化 PDF 文件,设置字体 2、添加标题、内容、表格和图片 三、使用工具类生成 PDF 四、源码地址 在 Unity 项目中,我们有时会需要生成带有文本、表格和图片的 PDF 文件,以便…

【AlphaFold3】开源本地的安装及使用

文章目录 安装安装DockerInstalling Docker on Host启用Rootless Docker 安装 GPU 支持安装 NVIDIA 驱动程序安装 NVIDIA 对 Docker 的支持 获取 AlphaFold 3 源代码获取基因数据库获取模型参数构建将运行 AlphaFold 3 的 Docker 容器 参考 AlphaFold3: https://github.com/goo…

[JAVA]MyBatis框架—获取SqlSession对象

SqlSessionFactory作为MyBatis框架的核心接口有三大特性 SqlSessionFactory是MyBatis的核心对象 用于初始化MyBatis&#xff0c;创建SqlSession对象 保证SqlSessionFactory在应用中全局唯一 1.SqlSessionFactory是MyBatis的核心对象 假设我们要查询数据库的用户信息&#x…

ArkTS学习笔记:ArkTS起步

ArkTS是HarmonyOS的主力应用开发语言&#xff0c;基于TypeScript扩展&#xff0c;强化了静态检查和分析&#xff0c;旨在提升程序稳定性和性能。它采用静态类型&#xff0c;禁止运行时改变对象布局&#xff0c;并对UI开发框架能力进行扩展&#xff0c;支持声明式UI描述和自定义…

JAVA 之 JDBC

JDBC概述 基本介绍 1.JDBC为访问不同的数据库提供了统一的接口&#xff0c;为使用者屏蔽了细节问题。 2.Java程序员使用JDBC,可以连接任何提供了JDBC驱动程序的数据库系统&#xff0c;从而完成对数据库的各种操作。 3.JDBC的基本原理[ 重要 ] 4.模拟JDBC com.lmbc.myjdbc…

用 Python 从零开始创建神经网络(五):损失函数(Loss Functions)计算网络误差

用损失函数&#xff08;Loss Functions&#xff09;计算网络误差 引言1. 分类交叉熵损失&#xff08;Categorical Cross-Entropy Loss&#xff09;2. 分类交叉熵损失类&#xff08;The Categorical Cross-Entropy Loss Class&#xff09;展示到目前为止的所有代码3. 准确率计算…

Redis做分布式锁

&#xff08;一&#xff09;为什么要有分布式锁以及本质 在一个分布式的系统中&#xff0c;会涉及到多个客户端访问同一个公共资源的问题&#xff0c;这时候我们就需要通过锁来做互斥控制&#xff0c;来避免类似于线程安全的问题 因为我们学过的sychronized只能对线程加锁&…

阿里云引领智算集群网络架构的新一轮变革

阿里云引领智算集群网络架构的新一轮变革 云布道师 11 月 8 日~ 10 日在江苏张家港召开的 CCF ChinaNet&#xff08;即中国网络大会&#xff09;上&#xff0c;众多院士、教授和业界技术领袖齐聚一堂&#xff0c;畅谈网络未来的发展方向&#xff0c;聚焦智算集群网络的创新变…

预处理(1)(手绘)

大家好&#xff0c;今天给大家分享一下编译器预处理阶段&#xff0c;那么我们来看看。 上面是一些预处理阶段的知识&#xff0c;那么明天给大家讲讲宏吧。 今天分享就到这里&#xff0c;谢谢大家&#xff01;&#xff01;

ZYNQ程序固化——ZYNQ学习笔记7

一、ZYNQ启动过程 二、 SD卡启动实操 1、对ZYNQ进行配置添加Flash 2、添加SD卡 3、重新生成硬件信息 4、创建vitis工程文件 5、勾选板级支持包 6、对系统工程进行整体编译&#xff0c;生成两个Debug文件&#xff0c;如图所示。 7、插入SD卡&#xff0c;格式化为 8、考入BOOT.…