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实现的图片马赛克后显示并切换加文字功能
Apr 21 Javascript
jQuery + Flex 通过拖拽方式动态改变图片的代码
Aug 03 Javascript
JavaScript面向对象设计二 构造函数模式
Dec 20 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
Jul 31 Javascript
js中将String转换为number以便比较
Jul 08 Javascript
javascript 兼容各个浏览器的事件
Feb 04 Javascript
asp.net中oracle 存储过程(图文)
Aug 12 Javascript
概述如何实现一个简单的浏览器端js模块加载器
Dec 07 Javascript
Bootstrap页面缩小变形的快速解决办法
Feb 03 Javascript
浅谈通过JS拦截 pushState和replaceState事件
Jul 21 Javascript
react-router4 嵌套路由的使用方法
Jul 24 Javascript
Vue-router 切换组件页面时进入进出动画方法
Sep 01 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类包含的七种语法说明
2015/06/04 PHP
启用Csrf后POST数据时出现的400错误
2015/07/05 PHP
用js实现的抽象CSS圆角效果!!
2007/05/03 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
2017/04/10 jQuery
全面解析jQuery中的$(window)与$(document)的用法区别
2017/08/15 jQuery
基于Vuejs的搜索匹配功能实现方法
2018/03/03 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
vue 组件销毁并重置的实现
2020/01/13 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
element-ui封装一个Table模板组件的示例
2021/01/04 Javascript
python在多玩图片上下载妹子图的实现代码
2013/08/13 Python
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
Python数据结构与算法之完全树与最小堆实例
2017/12/13 Python
python学习开发mock接口
2019/04/28 Python
python与字符编码问题
2019/05/24 Python
python处理excel绘制雷达图
2019/10/18 Python
基于python实现微信好友数据分析(简单)
2020/02/16 Python
关于Kotlin中SAM转换的那些事
2020/09/15 Python
web字体加载方案优化小结
2019/11/29 HTML / CSS
Tory Burch美国官方网站:美国时尚生活品牌
2016/08/01 全球购物
亚洲独特体验旅游专家:eOasia
2018/08/15 全球购物
医学院护理专业应届生求职信
2013/11/12 职场文书
打架检讨书100字
2014/01/19 职场文书
婚礼主持词开场白
2014/03/13 职场文书
工程质量承诺书范文
2014/03/27 职场文书
清正廉洁演讲稿
2014/05/22 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
小学兴趣小组活动总结
2014/07/07 职场文书
质检员工作总结2015
2015/04/25 职场文书
Mysql忘记密码解决方法
2022/02/12 MySQL
opencv深入浅出了解机器学习和深度学习
2022/03/17 Python
CentOS下安装Jenkins的完整步骤
2022/04/07 Servers
mybatis-plus模糊查询指定字段
2022/04/28 Java/Android
MySQL 原理与优化之Update 优化
2022/08/14 MySQL