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中调用WebService方法小结
Mar 28 Javascript
js window.onload 加载多个函数和追加函数详解
Jan 08 Javascript
javascript模拟C#格式化字符串
Aug 26 Javascript
JS实现环形进度条(从0到100%)效果
Jul 05 Javascript
轻松掌握JavaScript策略模式
Aug 25 Javascript
浅谈js中function的参数默认值
Feb 20 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
Mar 06 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
May 20 Javascript
详解用webpack把我们的业务模块分开打包的方法
Jul 20 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
Sep 07 Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
Apr 25 Javascript
浅谈vant组件Picker 选择器选单选问题
Nov 04 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+MYSQL的文章管理系统(二)
2006/10/09 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
PHP+Session防止表单重复提交的解决方法
2018/04/09 PHP
js 多种变量定义(对象直接量,数组直接量和函数直接量)
2010/05/24 Javascript
由点击页面其它地方隐藏div所想到的jQuery的delegate
2013/08/29 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
2015/11/04 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
浅析JS获取url中的参数实例代码
2016/06/14 Javascript
Angular使用ng-messages与PHP进行表单数据验证
2016/12/28 Javascript
Angular中使用$watch监听object属性值的变化(详解)
2017/04/24 Javascript
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
bootstrap table sum总数量统计实现方法
2017/10/29 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
2018/02/18 jQuery
解决vue2.0动态绑定图片src属性值初始化时报错的问题
2018/03/14 Javascript
浅谈发布订阅模式与观察者模式
2019/04/09 Javascript
Vue通过配置WebSocket并实现群聊功能
2019/12/31 Javascript
原生js实现密码强度验证功能
2020/03/18 Javascript
微信小程序实现简单购物车功能
2020/12/30 Javascript
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
python根据京东商品url获取产品价格
2015/08/09 Python
python实现域名系统(DNS)正向查询的方法
2016/04/19 Python
详解python中Numpy的属性与创建矩阵
2018/09/10 Python
Python定义函数时参数有默认值问题解决
2019/12/19 Python
Python跑循环时内存泄露的解决方法
2020/01/13 Python
python使用pyecharts库画地图数据可视化的实现
2020/03/25 Python
css3的transform造成z-index无效解决方案
2014/12/04 HTML / CSS
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
京东奢侈品:全球奢侈品牌
2018/03/17 全球购物
AMAVII眼镜官网:时尚和设计师太阳镜
2019/05/05 全球购物
四风个人对照检查材料思想汇报(办公室通用版)
2014/10/07 职场文书
80后婚前协议书范本
2014/10/24 职场文书
党员评议自我评价
2015/03/03 职场文书
春风化雨观后感
2015/06/11 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
vue项目打包后路由错误的解决方法
2022/04/13 Vue.js