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 相关文章推荐
JavaScript中的History历史对象
Jan 16 Javascript
自己写了一个展开和收起的多更能型的js效果
Mar 05 Javascript
JavaScript合并两个数组并去除重复项的方法
Jun 13 Javascript
如何使用jQuery技术开发ios风格的页面导航菜单
Jul 29 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
Aug 07 Javascript
jquery插件pagination实现无刷新ajax分页
Sep 30 Javascript
JS实现弹出居中的模式窗口示例
Jun 20 Javascript
Angular2表单自定义验证器的实现
Oct 19 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
Jun 29 Javascript
vue2.0使用swiper组件实现轮播效果
Nov 27 Javascript
JS实现的文件拖拽上传功能示例
May 21 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
Jul 25 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
php堆排序(heapsort)练习
2013/11/13 PHP
php随机显示图片的简单示例
2014/02/15 PHP
php检查日期函数checkdate用法实例
2015/03/19 PHP
PHP数组和explode函数示例总结
2015/05/08 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
XML的代替者----JSON
2007/07/21 Javascript
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
理解jquery事件冒泡
2016/01/03 Javascript
深入理解JS中的Function.prototype.bind()方法
2016/10/11 Javascript
微信小程序实现实时圆形进度条的方法示例
2017/02/24 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
2017/07/22 jQuery
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
微信小程序 scroll-view实现锚点滑动的示例
2017/12/06 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
Node.js中console.log()输出彩色字体的方法示例
2019/12/01 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
Python深入学习之闭包
2014/08/31 Python
python通过TimedRotatingFileHandler按时间切割日志
2019/07/17 Python
python 上下文管理器及自定义原理解析
2019/11/19 Python
OpenCV python sklearn随机超参数搜索的实现
2020/01/17 Python
python map比for循环快在哪
2020/09/21 Python
python switch 实现多分支选择功能
2020/12/21 Python
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
Linux中如何用命令创建目录
2016/12/02 面试题
幼儿园优秀教师事迹
2014/02/13 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
护士工作失误检讨书
2014/09/14 职场文书
安全先进班组材料
2014/12/26 职场文书
2015财务年终工作总结范文
2015/05/22 职场文书
元旦晚会主持词开场白
2015/05/28 职场文书
详解Flask开发技巧之异常处理
2021/06/15 Python
利用python实时刷新基金估值(摸鱼小工具)
2021/09/15 Python
Redis模仿手机验证码发送的实现示例
2021/11/02 Redis
css3带你实现3D转换效果
2022/02/24 HTML / CSS
如何在Python中妥善使用进度条详解
2022/04/05 Python