当前位置:网站首页 > Vue.js开发 > 正文

VUE中,el-select选择器多选下拉框实现全选功能和取消全选

VUE中,el-select选择器多选下拉框实现全选功能和取消全选

Select 选择器之elementUI版——https://element.eleme.cn/#/zh-CN/component/select

Select 选择器之Ant Design of Vue版——https://www.antdv.com/components/select-cn/

场景

elementUI的下拉框支持多选,但是不支持全选,但需求就要这个功能

解决思路
方法一:下拉项增加一个【全选】

应该有以下几种情况:

  • 下拉选项全都勾选时,【全选】自动勾选;
  • 下拉选项部分勾选时,点击【全选】后,所有下拉项全部勾选;
  • 下拉选项全都未勾选时,点击【全选】后,所有下拉选项全部勾选;
  • 下拉选项和【全选】都选上的时候,不勾选任意下拉选项,【全选】按钮就不勾选了;
实例1

html

<template> <el-select multiple collapse-tags v-model='selectedArray' @change='changeSelect' @remove-tag='removeTag' placeholder='请选择'> <el-option label='全选' value='全选' @click.native='selectAll'></el-option> <el-option v-for='(item, index) in options' :key='index' :label='item.name' :value='item.name'></el-option> </el-select> </template> 

js

export default { 
    data() { 
    return { 
    selectedArray: [], options: [ { 
    name: '一一', label: 'one' }, { 
    name: '二二', label: 'tow' }, { 
    name: '三三', label: 'three' }, { 
    name: '四四', label: 'four' }, { 
    name: '五五', label: 'five' } ] } }, methods: { 
    selectAll() { 
    if (this.selectedArray.length < this.options.length) { 
    this.selectedArray = [] this.options.map((item) => { 
    this.selectedArray.push(item.name) }) this.selectedArray.unshift('全选') } else { 
    this.selectedArray = [] } }, changeSelect(val) { 
    if (!val.includes('全选') && val.length === this.options.length) { 
    this.selectedArray.unshift('全选') } else if (val.includes('全选') && (val.length - 1) < this.options.length) { 
    this.selectedArray = this.selectedArray.filter((item) => { 
    return item !== '全选' }) } }, removeTag(val) { 
    if (val === '全选') { 
    this.selectedArray = [] } } } } 

效果图

在这里插入图片描述

方法二:直接添加一个【全选】复选框

实现的功能跟方法一是一样的

html

<template> <el-select multiple collapse-tags v-model='selectedArray' @change='changeSelect' placeholder='请选择'> <el-checkbox v-model="checked" @change='selectAll'>全选</el-checkbox> <el-option v-for='(item, index) in options' :key='index' :label='item.name' :value='item.name'></el-option> </el-select> </template> 

js

export default { 
    data() { 
    return { 
    checked: false, selectedArray: [], options: [ { 
    name: '一一', label: 'one' }, { 
    name: '二二', label: 'tow' }, { 
    name: '三三', label: 'three' }, { 
    name: '四四', label: 'four' }, { 
    name: '五五', label: 'five' } ] } }, methods: { 
    selectAll() { 
    this.selectedArray = [] if (this.checked) { 
    this.options.map((item) => { 
    this.selectedArray.push(item.name) }) } else { 
    this.selectedArray = [] } }, changeSelect(val) { 
    if (val.length === this.options.length) { 
    this.checked = true } else { 
    this.checked = false } } } } 

css

.el-checkbox { 
    text-align: right; width: 100%; padding-right: 10px; } 

效果图

在这里插入图片描述

到此这篇VUE中,el-select选择器多选下拉框实现全选功能和取消全选的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • vue中使用图像编辑器tui-image-editor(三)——示例之详细注释和组件化.md2024-12-02 07:18:04
  • vue3中,封装dialog组件,实现页面级一级弹框、二级弹框和三级弹框(一)——一级弹框 & 封装关闭按钮 & 全局定义和引入公共样式 & 页面@import引入自定义样式2024-12-02 07:18:04
  • vue3中,封装dialog组件,实现页面级一级弹框、二级弹框和三级弹框(二)——二级弹框2024-12-02 07:18:04
  • vue3中,封装dialog组件,实现页面级一级弹框、二级弹框和三级弹框(三)——三级弹框2024-12-02 07:18:04
  • vue3中,封装tag标签列中,单击进行切换分类2024-12-02 07:18:04
  • vue自定义指令2024-12-02 07:18:04
  • vue中配置axios教程-定稿版(一)——api index.js配置文件和.env文件2024-12-02 07:18:04
  • 配置项目(一)——vue.config.js2024-12-02 07:18:04
  • vue中配置axios教程-定稿版(三)——页面index.vue中引入和使用接口文件,network查看请求和响应2024-12-02 07:18:04
  • vue项目路由跳转后上一页面未完成的接口取消2024-12-02 07:18:04
  • 全屏图片