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 实现AJAX加载XML并解析的脚本
Jul 25 Javascript
解决jquery插件冲突的问题
Jan 23 Javascript
input禁止键盘及中文输入,但可以点击
Feb 13 Javascript
可恶的ie8提示缺少id未定义
Mar 20 Javascript
JavaScript不刷新实现浏览器的前进后退功能
Nov 05 Javascript
js canvas实现擦除动画
Jul 16 Javascript
学习使用Bootstrap栅格系统
May 11 Javascript
详解在AngularJS的controller外部直接获取$scope
Jun 02 Javascript
vue脚手架vue-cli的学习使用教程
Jun 06 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
Jul 05 jQuery
Javascript中弹窗confirm与prompt的区别
Oct 26 Javascript
js 实现 list转换成tree的方法示例(数组到树)
Aug 18 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
长波有什么东西
2021/03/01 无线电
PHP修改session_id示例代码
2014/01/08 PHP
ThinkPHP进程计数类Process用法实例详解
2015/09/25 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
php解决DOM乱码的方法示例代码
2016/11/20 PHP
CI框架AR数据库操作常用函数总结
2016/11/21 PHP
javascript处理table表格的代码
2010/12/06 Javascript
cnblogs 代码高亮显示后的代码复制问题解决实现代码
2011/12/14 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
2013/01/24 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
2016/05/16 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
2016/08/17 Javascript
js date 格式化
2017/02/15 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
Nodejs 和Session 原理及实战技巧小结
2017/08/25 NodeJs
jQuery 改变P标签文本值方法
2018/02/24 jQuery
vue中如何去掉空格的方法实现
2018/11/09 Javascript
在node中使用jwt签发与验证token的方法
2019/04/03 Javascript
小程序云开发如何实现图片上传及发表文字
2019/05/17 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
Python学习教程之常用的内置函数大全
2017/07/14 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
django 通过url实现简单的权限控制的例子
2019/08/16 Python
Python搭建代理IP池实现获取IP的方法
2019/10/27 Python
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
abstract是什么意思
2012/02/12 面试题
美工的岗位职责
2013/11/14 职场文书
护士自荐信范文
2013/12/15 职场文书
安全教育演讲稿
2014/05/09 职场文书
排查整治工作方案
2014/06/09 职场文书
2014最新开业庆典策划方案(5篇)
2014/09/15 职场文书
英文版辞职信
2015/02/28 职场文书
2015秋季小学开学寄语
2015/05/27 职场文书
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript