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移动div层-javascript 拖动层
Mar 22 Javascript
js调用webservice中的方法实现思路及代码
Feb 25 Javascript
js 操作符汇总
Nov 08 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
May 10 Javascript
JavaScript:Array类型全面解析
May 19 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
Aug 23 Javascript
JS实现的幻灯片切换显示效果
Sep 07 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
Jan 16 Javascript
微信小程序实现图片上传
May 23 Javascript
vue滚动固定顶部及修改样式的实例代码
May 30 Javascript
JS实现拖动模糊框特效
Aug 25 Javascript
记一次vue跨域的解决
Oct 21 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
2020年4月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
2011/11/21 PHP
PHP正确解析UTF-8字符串技巧应用
2012/11/07 PHP
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
PHP goto语句简介和使用实例
2014/03/11 PHP
javascript 对象定义方法 简单易学
2009/03/22 Javascript
浅析IE10兼容性问题(frameset的cols属性)
2014/01/03 Javascript
jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
2014/05/22 Javascript
JavaScript设计模式之建造者模式介绍
2014/12/28 Javascript
javascript实现密码强度显示
2015/03/18 Javascript
BootStrap轻松实现微信页面开发代码分享
2016/10/21 Javascript
Vue 父子组件、组件间通信
2017/03/08 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
JavaScript基础之流程控制语句的用法
2017/08/31 Javascript
微信小程序scroll-x失效的完美解决方法
2018/07/18 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
如何在微信小程序中实现Mixins方案
2019/06/20 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
[03:57]《不朽》——2015DOTA2国际邀请赛—中国军团出征主题曲MV
2015/07/15 DOTA
Python获取脚本所在目录的正确方法
2014/04/15 Python
对pandas通过索引提取dataframe的行方法详解
2019/02/01 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
2020/02/26 Python
python实现人脸签到系统
2020/04/13 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
美国知名的女性服饰品牌:LOFT(洛芙特)
2016/08/05 全球购物
无畏的旅行:Intrepid Travel
2017/12/20 全球购物
英国复古服装购物网站:Collectif
2019/10/30 全球购物
旅游专业职业生涯规划范文
2014/01/13 职场文书
2014年小学元旦活动方案
2014/02/12 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
交通局领导班子群众路线教育实践活动对照检查材料思想汇报
2014/10/09 职场文书
详解Spring事件发布与监听机制
2021/06/30 Java/Android
mysql事务对效率的影响分析总结
2021/10/24 MySQL
MySQL 数据库范式化设计理论
2022/04/22 MySQL