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

  • 荣耀x10max如何打开智慧识屏(荣耀x10max如何打开内部nfc)

    荣耀x10max如何打开智慧识屏(荣耀x10max如何打开内部nfc)

  • 华为免提对方就听不见(华为开免提对方能听到,关闭对方就听不到了)

    华为免提对方就听不见(华为开免提对方能听到,关闭对方就听不到了)

  • 微信视频通话内容能恢复吗

    微信视频通话内容能恢复吗

  • 小米9快充突然变慢了(小米9快充突然没电了)

    小米9快充突然变慢了(小米9快充突然没电了)

  • honor是什么牌子电脑(honor是什么牌子电脑多少钱)

    honor是什么牌子电脑(honor是什么牌子电脑多少钱)

  • 云计算本质上是一种信息服务模式对吗(云计算 本质)

    云计算本质上是一种信息服务模式对吗(云计算 本质)

  • 微信语音无法识别是怎么回事(微信语音无法识别,显示网络连接失败)

    微信语音无法识别是怎么回事(微信语音无法识别,显示网络连接失败)

  • p30摄像头玻璃怎么换(p30 摄像头玻璃)

    p30摄像头玻璃怎么换(p30 摄像头玻璃)

  • 找靓机bs机是什么意思(找靓机bs机能买吗)

    找靓机bs机是什么意思(找靓机bs机能买吗)

  • oppo手机怎么卸载桌面的软件(oppo手机怎么卸载小布助手)

    oppo手机怎么卸载桌面的软件(oppo手机怎么卸载小布助手)

  • oppo breeno是什么(oppo手机breeno是什么意思)

    oppo breeno是什么(oppo手机breeno是什么意思)

  • 淘宝两个黄钻是多少级(淘宝两个黄钻石)

    淘宝两个黄钻是多少级(淘宝两个黄钻石)

  • 群被投诉但是没封群(群被提示投诉,为什么不封群)

    群被投诉但是没封群(群被提示投诉,为什么不封群)

  • 快手动态添加什么意思(快手设置动态)

    快手动态添加什么意思(快手设置动态)

  • 手机低数据模式是什么意思(手机低数据模式怎么改)

    手机低数据模式是什么意思(手机低数据模式怎么改)

  • 百度地图如何制作路书(百度地图如何制定行程路线)

    百度地图如何制作路书(百度地图如何制定行程路线)

  • 产品短视频如何制作(产品短视频怎么做)

    产品短视频如何制作(产品短视频怎么做)

  • vivoy3是哪年出的(vivoy3什么时候出的)

    vivoy3是哪年出的(vivoy3什么时候出的)

  • 黑胶cd和普通cd区别(黑胶cd和普通cd哪个音质好)

    黑胶cd和普通cd区别(黑胶cd和普通cd哪个音质好)

  • 口碑红包点外卖能用吗(口碑外卖津贴怎么用)

    口碑红包点外卖能用吗(口碑外卖津贴怎么用)

  • 如何使用U盘安装Win11系统?U盘安装Win11系统详细图文教程(如何使用u盘安装win11)

    如何使用U盘安装Win11系统?U盘安装Win11系统详细图文教程(如何使用u盘安装win11)

  • 路由器的默认网关是多少详情(路由器的默认网关在哪里看)

    路由器的默认网关是多少详情(路由器的默认网关在哪里看)

  • HelpHost.exe进程查询 HelpHost是什么进程 有什么作用(windows 查询进程)

    HelpHost.exe进程查询 HelpHost是什么进程 有什么作用(windows 查询进程)

  • 如何在最新版本宝塔Linux面板 7.9.4安装 Swoole Loader 扩展傻瓜化教程-OK源码中国(如何在最新版本钉钉上使用支付审申请)

    如何在最新版本宝塔Linux面板 7.9.4安装 Swoole Loader 扩展傻瓜化教程-OK源码中国(如何在最新版本钉钉上使用支付审申请)

  • phpcms admin登录失败怎么办(phpcms官网打不开)

    phpcms admin登录失败怎么办(phpcms官网打不开)

  • 成本利润率和销售利润率哪个大
  • 个人所得税账务处理分录
  • 不含税金额怎么算含税金额
  • 什么是存货周转率?存货周转率的意义是什么
  • 购买软件无形资产
  • 经营用的电饭锅有哪些
  • 如何区分总额法和净额法
  • 所得税费用和应交税费的关系
  • 销售商品房属于什么税
  • 因员工过失造成第三方损失
  • 存货取得长期股权投资
  • 社保扣款不成功会短信提醒吗
  • 耕地占用税为什么属于房地产开发成本
  • 企业转增股本要交税吗
  • 异地预缴企业所得税
  • 销售人员差旅费管理办法
  • 子公司销售给母公司商品
  • 房地产开发企业的土地使用权计入哪里
  • 每年空调的维保费用怎么入账?
  • 贸易公司购入商品会计分录
  • 企业外购零部件可以入哪个会计科目核算?
  • 一般纳税人错开免税发票如何申报
  • 代扣个税税率是多少
  • 企业季度所得税可以弥补以前年度亏损吗
  • 销售收入增加会导致哪些变动
  • 驾校如何用完工百分比法确认收入?
  • 收购报废车有利润吗
  • 把快速打开
  • 车辆保险费计入车辆的入账成本吗
  • 收据可以入账的文件
  • 简单制作教程
  • win10系统如何更改工作组
  • 广告费用计入什么会计科目
  • moviemaker是什么软件
  • 弗拉维亚王朝
  • 固定资产更新改造的账务处理
  • 短视频小程序源码
  • 商业汇票的承兑银行必须具备下列条件
  • 红字增值税专用发票信息表怎么填
  • php处理大文件
  • php如何连接sql server
  • 城投公司政府购买棚改
  • 蔬菜免征增值税优惠
  • 已收到货款 还未发货的会计处理
  • 出口未申报如何处理
  • 个体工商户可以开对公账户吗
  • 营改增后工程分包财务
  • python filter dict
  • 自产自用车辆购置税组成计税价格
  • 变更法人代表是重大事项吗
  • 工业企业会计核算中常见的会计核算程序有哪些?
  • 工程预付款是否含规费和税金
  • 提前报废固定资产会导致账面价值减少吗
  • 确认递延所得税资产账务处理
  • 单位购牙膏牙刷卫生纸怎么做账?
  • 计提应付账款会计分录
  • SQLServer2000 报1053错误(服务没有及时响应或控制请求)的解决方法
  • MySql 5.6.14 winx64配置方法(免安装版)
  • ms17010补丁怎么安装
  • freebsd操作命令
  • windows无法验证你的凭据
  • realmon.exe - realmon是什么进程 有什么用
  • windows屏蔽网络设置的方法不包括以下哪种
  • linux中make
  • win7蓝屏代码0x0000007e
  • win7运行窗口在哪
  • 铁嘴大师
  • pe,翻译
  • node操作mongodb数据库
  • dos命令检测硬盘坏道
  • textview在哪
  • 加快构建新发展格局,着力推动高质量发展心得体会
  • bat脚本如何运行
  • css ul
  • python 编程技巧
  • 表单失去焦点事件
  • jquery怎么修改样式
  • js使用类
  • 增值税税控开票软件密码不知道了怎么办
  • 个人所得税法实施条例2011
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设