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 相关文章推荐
js获取div高度的代码
Aug 09 Javascript
js解析与序列化json数据(三)json的解析探讨
Feb 01 Javascript
js验证输入是否为手机号码或电话号码示例
Dec 30 Javascript
非常棒的jQuery图片轮播效果
Apr 17 Javascript
原生js三级联动的简单实现代码
Jun 07 Javascript
Bootstrap实现水平排列的表单
Jul 04 Javascript
Angularjs实现搜索关键字高亮显示效果
Jan 17 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
Jul 27 Javascript
vue+springboot图片上传和显示的示例代码
Feb 14 Javascript
JavaScript 类的封装操作示例详解
May 16 Javascript
JavaScript TAB栏切换效果的示例
Nov 05 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
基于mysql的论坛(1)
2006/10/09 PHP
PHP 采集程序原理分析篇
2010/03/05 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
php使用文本统计访问量的方法
2016/05/12 PHP
javascript下arguments,caller,callee,call,apply示例及理解
2009/12/24 Javascript
Javascript UrlDecode函数代码
2010/01/09 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
2015/08/03 Javascript
JavaScript中的prototype原型学习指南
2016/05/09 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
详谈js模块化规范
2017/07/07 Javascript
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
Vue作用域插槽slot-scope实例代码
2018/09/05 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
利用d3.js力导布局绘制资源拓扑图实例教程
2019/01/08 Javascript
vue 实现websocket发送消息并实时接收消息
2019/12/09 Javascript
[01:01:22]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Python 字符串定义
2009/09/25 Python
用python删除java文件头上版权信息的方法
2014/07/31 Python
Python中的匿名函数使用简介
2015/04/27 Python
Python中Random和Math模块学习笔记
2015/05/18 Python
Phantomjs抓取渲染JS后的网页(Python代码)
2016/05/13 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
对python for 文件指定行读写操作详解
2018/12/29 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
Python实现在线批量美颜功能过程解析
2020/06/10 Python
如何在网站上添加谷歌定位信息
2016/04/16 HTML / CSS
美国购车网站:TrueCar
2016/10/19 全球购物
手术室护士自我鉴定
2013/10/14 职场文书
向国旗敬礼学生寄语大全
2014/09/30 职场文书
市级三好学生评语
2014/12/29 职场文书
餐饮服务食品安全承诺书
2015/04/29 职场文书
硕士学位申请报告
2015/05/15 职场文书
2016先进集体事迹材料范文
2016/02/25 职场文书
2016年党员创先争优承诺书
2016/03/25 职场文书
html5表单的required属性使用
2021/07/07 HTML / CSS