位置: 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设计卷积神经网络

  • 淘宝店怎么经营和推广(怎样经营淘宝店铺才赚钱)

    淘宝店怎么经营和推广(怎样经营淘宝店铺才赚钱)

  • 支付宝代办的健康码如何删除(支付宝代办的健康码怎么注销)

    支付宝代办的健康码如何删除(支付宝代办的健康码怎么注销)

  • iphone微信怎么分身(iPhone微信怎么分段)

    iphone微信怎么分身(iPhone微信怎么分段)

  • iPhone11苹果微信7.0.4怎么改提示音(苹果11微信新功能)

    iPhone11苹果微信7.0.4怎么改提示音(苹果11微信新功能)

  • 小米5g专属ota卡是干什么用的(小米5g专用ota卡)

    小米5g专属ota卡是干什么用的(小米5g专用ota卡)

  • 重置电脑以后文件如何恢复(重置电脑以后文件会丢吗)

    重置电脑以后文件如何恢复(重置电脑以后文件会丢吗)

  • 小度不开机了怎么回事(小度不开机怎么弄)

    小度不开机了怎么回事(小度不开机怎么弄)

  • 抖音左下角三角形和数字是什么意思(抖音左下角三角形重复看也会显示吗)

    抖音左下角三角形和数字是什么意思(抖音左下角三角形重复看也会显示吗)

  • 怎样把多张照片合成一张发到朋友圈(怎样把多张照片打印在一张a4纸上)

    怎样把多张照片合成一张发到朋友圈(怎样把多张照片打印在一张a4纸上)

  • 公众号管理员和运营者区别(公众号管理员和运营者的区别)

    公众号管理员和运营者区别(公众号管理员和运营者的区别)

  • 朋友圈最长显示多少天动态(朋友圈最长显示多少小时前)

    朋友圈最长显示多少天动态(朋友圈最长显示多少小时前)

  • win7卡在应用系统设置要多久(win7系统应用程序已停止工作怎么解决)

    win7卡在应用系统设置要多久(win7系统应用程序已停止工作怎么解决)

  • qq里面的原力值是什么意思(qq原力值是什么意思 qq原力值怎么获得)

    qq里面的原力值是什么意思(qq原力值是什么意思 qq原力值怎么获得)

  • windows95是什么操作系统(windows95的意义)

    windows95是什么操作系统(windows95的意义)

  • 微信视频接不起来是怎么回事(微信视频接不起来怎么回事显示连接中)

    微信视频接不起来是怎么回事(微信视频接不起来怎么回事显示连接中)

  • 微信登录操作频繁怎么办(微信登录操作频率过快,请稍后重试怎么回事?)

    微信登录操作频繁怎么办(微信登录操作频率过快,请稍后重试怎么回事?)

  • 小米8nfc在哪(小米8nfc功能是什么意思怎么使用)

    小米8nfc在哪(小米8nfc功能是什么意思怎么使用)

  • 手机光圈大小的区别(手机光圈数值大好还是小好)

    手机光圈大小的区别(手机光圈数值大好还是小好)

  • 拼多多怎么查看运费险(拼多多怎么查看自己买过的东西)

    拼多多怎么查看运费险(拼多多怎么查看自己买过的东西)

  • 小米9出厂自带膜吗(小米9出厂自带的膜怎么样)

    小米9出厂自带膜吗(小米9出厂自带的膜怎么样)

  • 开发小程序有什么意义(开发小程序有什么财务风险)

    开发小程序有什么意义(开发小程序有什么财务风险)

  • 苹果a1530是苹果几代(苹果a1530是什么)

    苹果a1530是苹果几代(苹果a1530是什么)

  • uni-app组件-应用简单快速上线(uniapp组件使用)

    uni-app组件-应用简单快速上线(uniapp组件使用)

  • 业务宣传费和广告费的扣除标准
  • 进项税额比销项税额大怎么办
  • 净利润和盈余公积的会计分录
  • 景点门票可以做账吗
  • 非盈利组织减免的增值税怎么做账
  • 代订餐如何赚钱
  • 法人章和财务章谁保管
  • 小规模纳税人30万含专票吗
  • 文化建设税怎么填
  • 火车票抵扣进项税怎么计算
  • 什么情况可以减免税收
  • 准予在以后年度结转扣除的项目
  • 出口退税会计处理全部流程
  • 坏账确认无法收回的会计分录
  • 退回投标保证金分录
  • 长期借款利息计入在建工程
  • 非货币交易例子
  • 贸易公司代采购怎么做账
  • 施工企业仪器设备入什么会计科目核算?
  • 销售货物并提供安装服务
  • 印花税应税凭证填是还是否
  • 国外公司怎么付款给国内
  • 小规模季度不超过45万的税收优惠
  • 发票上的备注怎么填写步骤
  • 其他权益工具包含
  • 向银行贷款资产包括哪些
  • 全免增值税企业所得税吗
  • win11重置此电脑失败
  • 小规模纳税人的专票可以抵税吗
  • 合并范围外关联方交易是否抵消
  • windows10 电脑
  • win7为什么还有人用
  • w10引导修复工具
  • 刷路由器固件的作用和意义
  • win10电脑记事本打不开显示错误
  • qqlogin.exe是什么进程 qqlogin.exe应用程序错误解决办法
  • postman如何设置token
  • php生成二维码
  • vue项目上线教程
  • Create OpenAI Account的教程来啦,赶紧学习吧!
  • PHP:imagecreatefromxpm()的用法_GD库图像处理函数
  • 新公司30天内未办理税务登记
  • 支付航天信息服务费怎么入账
  • php制作留言板包含登录和功能实现
  • php环境怎么搭
  • 公司全部股权转让流程
  • 个税申报逾期罚款怎么算
  • 科目余额表和资产负债表的期末余额不一样,怎么办
  • 个体工商户季度超过9万怎么交税
  • sqlserver实现分页查询
  • 公司车辆缴纳车船税
  • 应收票据及应收账款包括哪些科目
  • 个人所得税年度累计扣税规则
  • 季度缴纳企业所得税可以弥补亏损吗
  • 进项税转出金额怎么算
  • 全年一次性奖金并入或单独哪个好
  • 投资性房地产在资产负债表哪个科目
  • 长期待摊费用装修费分摊分录
  • 增值税进项税额属于什么科目
  • 没有计提社保如何处理
  • 少交税款滞纳金
  • 企业的一般账户可以转款到个人吗
  • 小规模公司一般开什么发票
  • sql如何学
  • sqlserver 中ntext字段的批量替换(updatetext的用法)
  • win7怎样安装摄像头驱动
  • wupdated.exe - wupdated是什么进程
  • windows10更新遇到错误怎么解决
  • Windows 7+Fedora 16启动项问题讲解
  • lua struct
  • Unity3D游戏开发标准教程
  • 批处理文件中echo什么意思
  • js右键菜单
  • jquery简单例子
  • jquery页面关闭事件
  • jquery实现图片横向移动
  • 网上申报成功怎么查询
  • 湖北税务发票查询系统网
  • 冷库出租企业有哪些
  • 征地税税率是多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设