位置: IT常识 - 正文

ElementUI实现在下拉列表里面进行搜索(elementui怎么样)

编辑:rootadmin
ElementUI实现在下拉列表里面进行搜索 分析:

推荐整理分享ElementUI实现在下拉列表里面进行搜索(elementui怎么样),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:element-ui,elementui怎么样,element-ui,elementui rule,elementui 3,elementui ts,elementui怎么样,elementui怎么样,内容如对您有帮助,希望把文章链接给更多的朋友!

首先我们需要实现上图的效果,然后Element-UI的el-select是没有的,所以需要自己写我们需要用到el-popover组件,然后使用它的v-model="visible"来实现控制显示我们在el-popover的slot="reference" 放一个el-select使用popper-append-to-body="false"不需要插入浮动元素使用popper-class="hide-popper"定义浮窗class为hide-popper,并设置 display:none,这样选中了就不会存在el-select的下拉选项el-option 循环下面选择的list里面的元素,这样就可以在el-select展示选中的并存在删除el-select双向绑定的就是自定义选择的数组html:<template><div class="arrbox"><!-- 通过visible控制显示还是隐藏 --><el-popoverv-model="visible"placement="bottom-start"width="auto"><div slot="reference" class="check-select"><!-- popper-append-to-body:不需要插入浮动元素,popper-class:设置类名并隐藏 --><el-selectref="select"v-model="currentval":style="{width:`${width}px`,height:`${height}`}"multiple:placeholder="placeholder":popper-append-to-body="false"popper-class="hide-popper"style="width:100%"@visible-change="visibleChange"@focus="getFocus"> <el-optionv-for="item in selectItem":key="`${item.value}_k`":label="item.label":value="item.value"/></el-select></div><!-- selectBxClick让select强制选中 --><div class="selectMain" :style="{'min-width':`${width-20}px`}" @click="selectBxClick"><div class="seachButton"><el-selectv-model="seachValue"placeholder=" 请选择筛选"style="width:70%;margin-right:10px;max-width:195px"@visible-change="selectBxClick()"><el-optionv-for="item in seachList":key="item.value":value="item.value":label="item.label"/></el-select><div class="btn" @click="seachBtn">搜索</div></div> <div class="selectDiv"> <div v-for="item in list.filter(n=>n.value=='all')" :key="item.value" class="list" :class="[currentval.indexOf(item.value)!=-1?'selected':'',item.value=='all'?'allCheck':'']" @click="clickItem(item)">{{ item.label }}</div> <div class="selectDivAuto"> <div v-for="item in list.filter(n=>n.value!='all')" :key="item.value" class="list" :class="[currentval.indexOf(item.value)!=-1?'selected':'',item.value=='all'?'allCheck':'']" @click="clickItem(item)">{{ item.label }}</div> </div> </div></div></el-popover></div></template>js:ElementUI实现在下拉列表里面进行搜索(elementui怎么样)

使用getFocus获取是否聚焦,聚焦了让visible=true,这样就可以显示出自定义的下拉选择项

通过visibleChange实施监听el-select,控制el-popover显示

在点击自定义的下拉选择项时,通过@click="selectBxClick"让el-select一直聚焦,这样箭头就会一直向上

通过 @click="seachBtn"和getList获取列表,具体需要自己去自定义

// 模拟获取的数据const seachClickList = [{value: '1',label: '测试1',type: '1'},{value: '2',label: '测试2',type: '1'},{value: '3',label: '测试3',type: '1'},{value: '4',label: '测试4',type: '2'},{value: '5',label: '测试5',type: '2'},{value: '6',label: '测试6',type: '2'},{value: '7',label: '测试7',type: '2'}]export default {model: {prop: 'parentArr',event: 'change-parentArr'},props: {parentArr: {type: Array,default() {return []}},// 传入选中的item,主要时防止list里面没有选中的数据parentSelectItem: {type: Array,default() {return []}},width: {type: Number,default: 300},height: {type: Number,default: 30},placeholder: {type: String,default: '请输入'}},data() {return {seachList: [{value: '1',label: '条件一'},{value: '2',label: '条件二'}],visible: false,currentval: [],list: [],selectItem: [],seachValue: '1'}},watch: {seachValue: {handler(value) {this.getList(value)},deep: true,immediate: true},parentArr: {handler(value) {this.currentval = value},deep: true,immediate: true},parentSelectItem: {handler(value) {this.selectItem = value.map(n => { if (n.value == 'all') { n.label = '全部' } return n })},deep: true,immediate: true},currentval: { handler(value) { this.$emit('change-parentArr', value) }}},created() {},methods: {getList(value) { this.list = [{ label: '全部', value: 'all' }, ...seachClickList.filter(n => n.type == value)] this.getSelectItem()},// 获取选中的itemgetSelectItem() { const noItemList = this.currentval.map(n => { if (this.selectItem.findIndex(i => i.value == n) == -1) { return n } return null }).filter(n => n != null) noItemList.forEach(item => { const index = this.list.findIndex(i => i.value == item) if (index != -1) { this.selectItem.push(this.list[index]) } })},getFocus() { this.visible = true},visibleChange(data) { this.visible = data},selectBxClick() { // 避免点击框体时组件消失 this.$refs.select.visible = true},// 选择clickItem(item) { const index = this.currentval.indexOf(item.value) if (index == -1) { if (item.value == 'all') { this.currentval = ['all'] this.selectItem = [{ label: '全部', value: 'all' }] } else { this.currentval.push(item.value) this.selectItem.push(item) const currentvalIndex = this.currentval.indexOf('all') const selectItemIndex = this.selectItem.findIndex(n => n.value == 'all') if (currentvalIndex != -1 && selectItemIndex != -1) { this.selectItem.splice(selectItemIndex, 1) this.currentval.splice(currentvalIndex, 1) } } } else { const itemIndex = this.selectItem.findIndex(n => n.value == item.value) this.selectItem.splice(itemIndex, 1) this.currentval.splice(index, 1) } },// 搜索seachBtn() { this.getList()}}}

css:

selected属性使用了el-select的样式,让样子尽量一致.arrbox {display: inline-block;}.check-select{::v-deep.hide-popper{display: none;}}::v-deep .el-input__suffix{i:not(.el-select__caret){display: none;}}.selectMain {width: 100%;height: 100%;.seachButton{width: 100%;align-items: center;display: flex;div.btn{width: 25%;max-width: 70px;max-width: 80px;height: 40px;display: flex;align-items: center;justify-content: center;font-size: 12px;color: #fff;background-color: #409EFF;border-radius: 5px;cursor: pointer;}}.selectDiv{ width: 100%; max-width: 500px; margin-top: 10px; padding: 0 10px 0 0; .list{ width: 100%; padding: 10px 20px 10px 10px; color: #666; cursor: pointer; position: relative; &.selected{ color: #409EFF; &::after{ position: absolute; right: 0px; top: 50%; transform: translateY(-50%); font-family: element-icons; content: "\e6da"; font-size: 12px; font-weight: 700; -webkit-font-smoothing: antialiased; } } } .selectDivAuto{ width: calc(100% + 15px); max-height: 300px; overflow-y: auto; .list{ padding: 10px 30px 10px 10px; &.selected::after{ right: 10px; } } } }}.allCheck{border-bottom: 1px solid rgb(228, 225, 225);}

使用

<template><seachSelectInput v-model="from.tag" :parentSelectItem='selectItem' :width="302" placeholder="请选择标签" /></template><script>import seachSelectInput from ./seachSelectInput'export default {components: {seachSelectInput},data(){return{from:{tag:['1']},selectItem:[{value: '1',label: '测试1'}]}}}
本文链接地址:https://www.jiuchutong.com/zhishi/299521.html 转载请保留说明!

上一篇:GPU版本安装Pytorch教程最新方法(gpu版本的pytorch)

下一篇:基于chatGPT设计卷积神经网络

  • 淘宝付了定金又不想要的东西怎么办(淘宝付了定金会不会没货)

    淘宝付了定金又不想要的东西怎么办(淘宝付了定金会不会没货)

  • 华为电子身份证用途(华为手机身份证扫描件怎么弄)

    华为电子身份证用途(华为手机身份证扫描件怎么弄)

  • 抖音好友显示隐藏无效视频(抖音好友显示隐私设置)

    抖音好友显示隐藏无效视频(抖音好友显示隐私设置)

  • ipad pro怎么开机(ipadpro开机键没反应)

    ipad pro怎么开机(ipadpro开机键没反应)

  • 用集分宝买的东西退货集分宝会退回吗(用集分宝商家收到的是钱吗)

    用集分宝买的东西退货集分宝会退回吗(用集分宝商家收到的是钱吗)

  • QQ关联对方为什么都是撤回(qq关联为什么对方能看到我的我看不到他的)

    QQ关联对方为什么都是撤回(qq关联为什么对方能看到我的我看不到他的)

  • 电脑键盘怎么切换符号(电脑键盘怎么切换成拼音打字)

    电脑键盘怎么切换符号(电脑键盘怎么切换成拼音打字)

  • wifi灯不闪是怎么回事(wifi灯不亮)

    wifi灯不闪是怎么回事(wifi灯不亮)

  • 小米analytics卸载了会怎样(miui analytics卸载后又出现)

    小米analytics卸载了会怎样(miui analytics卸载后又出现)

  • 苹果隔空投送怎么改名字(苹果隔空投送怎么接收不了)

    苹果隔空投送怎么改名字(苹果隔空投送怎么接收不了)

  • 摄像头5mp是什么意思(家用摄像头5mp是什么意思)

    摄像头5mp是什么意思(家用摄像头5mp是什么意思)

  • 云计算的部署模型主要有(云计算的部署模式不包括)

    云计算的部署模型主要有(云计算的部署模式不包括)

  • 微信怎么大量删除好友(微信怎么大量删除发的朋友圈)

    微信怎么大量删除好友(微信怎么大量删除发的朋友圈)

  • opporeno3可以无线充电吗(opporeno3怎么开启无线充电)

    opporeno3可以无线充电吗(opporeno3怎么开启无线充电)

  • r11充电功率(r11s充电器多少瓦)

    r11充电功率(r11s充电器多少瓦)

  • 什么是悬浮窗(什么是悬浮窗?)

    什么是悬浮窗(什么是悬浮窗?)

  • 拼多多差评可以改好评吗(拼多多差评可不可以让顾客退款这样差评还有吗?)

    拼多多差评可以改好评吗(拼多多差评可不可以让顾客退款这样差评还有吗?)

  • 什么是操作系统简答

    什么是操作系统简答

  • 苹果11是几个摄像头(苹果11几个摄像头管用)

    苹果11是几个摄像头(苹果11几个摄像头管用)

  • wps word段落在哪(wps文档段落在哪)

    wps word段落在哪(wps文档段落在哪)

  • 谷歌官网为什么进不去(为什么谷歌网上商店打不开)

    谷歌官网为什么进不去(为什么谷歌网上商店打不开)

  • x27手电筒在哪里(x27手电筒可以调更亮点吗)

    x27手电筒在哪里(x27手电筒可以调更亮点吗)

  • qq音乐如何单曲购买(qq音乐如何开启单曲循环)

    qq音乐如何单曲购买(qq音乐如何开启单曲循环)

  • 腾讯新闻的视频怎么下载(腾讯新闻的视频收藏在哪里)

    腾讯新闻的视频怎么下载(腾讯新闻的视频收藏在哪里)

  • 手机缓存视频如何导出(手机缓存视频如何在电脑上播放)

    手机缓存视频如何导出(手机缓存视频如何在电脑上播放)

  • 手把手教你实现一个JavaWeb项目:创建一个自己的网页博客系统(前端+后端)(一)(手把手教你实现用户登录界)

    手把手教你实现一个JavaWeb项目:创建一个自己的网页博客系统(前端+后端)(一)(手把手教你实现用户登录界)

  • 工程设备一览表
  • 递延所得税负债计算公式
  • 个体户能开增值税普通发票给单位吗?
  • 缴纳企业所得税会计分录怎么做
  • 收到货款会计分录怎么做
  • 公司车维修费
  • 预付卡发票可以报销吗?
  • 发生福利费的会计分录
  • 当月报废生产设备一台,原价80万元
  • 实收资本需要计提印花税吗
  • 红冲暂估原材料如何做会计分录
  • 所有的企业都能采用免费策略
  • 个人与个人之间转账有限额吗
  • 案例分析一般纳税人的税负率怎么计算?
  • 印花税滞纳金计入什么科目
  • 盈余公积补亏影响资产吗
  • 会计股权分配
  • 现金购入库存商品的分录
  • 收到联营企业分派的现金股利为什么不计入利润总额
  • 缴纳投标保证金
  • 对方不开票
  • 税务申报利润表本期金额
  • 股份支付的会计处理?
  • cdr插件哪个最好用
  • 无法卸载系统更新 backup
  • 红字专用发票是红色的吗
  • win11怎么录屏游戏
  • mssearch.exe - mssearch是什么进程 有什么用
  • 捐赠支出汇算清缴需要调增吗
  • 购进免税农产品进行进项税额抵扣时,其抵扣率为
  • 计算企业应纳税所得额时,可以扣除的税种
  • 金融企业存出保函的条件
  • PHP:FrenchToJD()的用法_日历函数
  • .php是什么
  • php操作mysql数据库
  • 新一代状态管理工具 -- Pinia 上手指南
  • 人工智能大模型上市公司
  • vi命令模式下的常用命令有哪些?
  • 销售费用占销售额比例怎么算
  • 社保费和公积金一定要计提吗
  • 筹建期的费用计入什么科目
  • 爬虫工程师简介
  • 小微企业城建税减免政策
  • 银行托管账户的规定有哪些
  • 公积金怎么推出工资
  • 个体户怎么交税?
  • sql 文件存储
  • 消防工程公司的成本包括哪些
  • 房地产公司项目开发流程
  • 付款后没有发票怎么办
  • 厨师的工资计入什么费用
  • 资产负债表中应付职工薪酬是负数
  • 小规模纳税人租赁费税率
  • 利息支出可以抵扣进项吗
  • 期间费用包括哪三种
  • 边际成本是什么意思大白话
  • 公司固定资产有很多种类,怎样计提折旧
  • 机械租赁怎么开9个点
  • mysql里面的数据类型
  • linux的telnet用法
  • xp系统exiting pxe rom
  • Linux系统安全管理的内容包括
  • 如何重设苹果手机的ID密码
  • 升级win8.1后vpn出现错误720该怎么办?
  • win7temp文件夹在哪
  • windows 8怎么样
  • win10系统桌面图标有白色方框的解决方法图...
  • jquery通过扩展select控件实现支持enter或focus选择的方法
  • linux中的shell命令
  • angular的排序管道
  • linux监控程序
  • jquery设置宽高
  • jquery弹窗弹出一个页面
  • python生成器send
  • js 原型方法
  • python如何用pi
  • 吉林省政府公开电话
  • 江苏省国家税务局
  • 销售黄金饰品
  • 东莞医保缴费凭证怎么下载
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设