el-select 下拉框多选实现全选的实现


Posted in Javascript onAugust 02, 2019

在写一个功能时发现el-select支持多选,但是竟然不支持全选,好无语哦,那就自己实现一下吧~有两种方法,第二种感觉简单些

方法一:下拉项增加一个【全选】,然后应该有以下几种情况:

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

上面就是我要实现的功能,我好??隆!!;故强创?氚伞!!?/p>

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 = []
  }
 }
 }
}

看看效果图:

el-select 下拉框多选实现全选的实现

el-select 下拉框多选实现全选的实现

方法二:直接添加一个【全选】复选框,实现的功能跟方法一是一样的

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;
 }

效果图:

el-select 下拉框多选实现全选的实现

el-select 下拉框多选实现全选的实现

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery 网站换肤功能实现代码
Nov 02 Javascript
javascript history对象(历史记录)使用方法(实现浏览器前进后退)
Jan 07 Javascript
javascript中数组的定义及使用实例
Jan 21 Javascript
jQuery插件jRumble实现网页元素抖动
Jun 05 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
Jan 21 Javascript
原生js编写autoComplete插件
Apr 13 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
Sep 17 Javascript
js模态对话框使用方法详解
Feb 16 Javascript
Vue中如何实现轮播图的示例代码
Jul 27 Javascript
基于Bootstrap table组件实现多层表头的实例代码
Sep 07 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
Oct 30 Javascript
JS实现秒杀倒计时特效
Jan 02 Javascript
js动态获取时间的方法分析
Aug 02 #Javascript
微信小程序实现语音识别转文字功能及遇到的坑
Aug 02 #Javascript
jQuery pager.js 插件动态分页功能实例分析
Aug 02 #jQuery
vue单页应用的内存泄露定位和修复问题小结
Aug 02 #Javascript
vue回到顶部监听滚动事件详解
Aug 02 #Javascript
微信小程序npm引入vant-weapp的踩坑记录
Aug 01 #Javascript
vue3.0中的双向数据绑定方法及优缺点
Aug 01 #Javascript
You might like
PHPThumb PHP 图片缩略图库
2012/03/11 PHP
php中将一段数据存到一个txt文件中并显示其内容
2014/08/15 PHP
php继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
php简单分页类实现方法
2015/02/26 PHP
window.dialogArguments 使用说明
2011/04/11 Javascript
jquery解析JSON数据示例代码
2014/03/17 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
学习使用bootstrap的modal和carousel
2016/12/09 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
zTree获取当前节点的下一级子节点数实例
2017/09/05 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
python基于xml parse实现解析cdatasection数据
2014/09/30 Python
Python实现115网盘自动下载的方法
2014/09/30 Python
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
六个窍门助你提高Python运行效率
2015/06/09 Python
Python实现的最近最少使用算法
2015/07/10 Python
深入理解python中的浅拷贝和深拷贝
2016/05/30 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
Python更换pip源方法过程解析
2020/05/19 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
通过Canvas及File API缩放并上传图片完整示例
2013/08/08 HTML / CSS
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
UNIX文件类型
2013/08/29 面试题
高一学生评语大全
2014/04/25 职场文书
授权委托书样本
2014/09/25 职场文书
终止劳动合同协议书
2014/10/05 职场文书
社保缴纳证明申请书
2014/11/03 职场文书
2016年大学生暑假爱心支教活动策划书
2015/11/26 职场文书
Java框架入门之简单介绍SpringBoot框架
2021/06/18 Java/Android
一文搞懂Golang 时间和日期相关函数
2021/12/06 Golang