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 相关文章推荐
ExtJS GridPanel 根据条件改变字体颜色
Mar 08 Javascript
jQuery阻止同类型事件小结
Apr 19 Javascript
JS实现当前页居中分页效果的方法
Jun 18 Javascript
基于jquery实现日历签到功能
Sep 11 Javascript
JS中创建函数的三种方式及区别
Mar 13 Javascript
微信js-sdk界面操作接口用法示例
Oct 12 Javascript
jquery实现图片切换代码
Oct 13 Javascript
jQuery、zepto、js常用小技巧
Feb 12 Javascript
webpack配置文件和常用配置项介绍
Apr 28 Javascript
Vue+Jwt+SpringBoot+Ldap完成登录认证的示例代码
May 21 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
Jul 25 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
Dec 07 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
几种显示数据的方法的比较
2006/10/09 PHP
PHP简单获取多个checkbox值的方法
2016/06/13 PHP
php生出随机字符串
2017/07/06 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
js 替换功能函数,用正则表达式解决,js的全部替换
2010/12/08 Javascript
元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
2011/01/12 Javascript
检测jQuery.js是否已加载的判断代码
2011/05/20 Javascript
JavaScript在XHTML中的用法详解
2013/04/11 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
2013/09/25 Javascript
jQuery中addClass()方法用法实例
2015/01/05 Javascript
node.js操作mongodb学习小结
2015/04/25 Javascript
JS实现兼容性较好的随屏滚动效果
2015/11/09 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
2016/06/17 Javascript
用js读写cookie的简单方法(推荐)
2016/08/08 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
Vue源码解析之数据响应系统的使用
2019/04/24 Javascript
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
element-ui 中使用upload多文件上传只请求一次接口
2019/07/19 Javascript
Python中的列表生成式与生成器学习教程
2016/03/13 Python
Python 中的 else详解
2016/04/23 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
Python实现FLV视频拼接功能
2020/01/21 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
Fashion Eyewear美国:英国线上设计师眼镜和太阳镜的零售商
2016/08/15 全球购物
100%羊绒:NakedCashmere
2020/08/26 全球购物
xml有哪些解析技术?区别是什么
2016/04/26 面试题
如何客观的进行自我评价
2013/12/17 职场文书
高中班级口号
2014/06/09 职场文书
群众路线教育实践活动民主生活会个人检查对照思想汇报
2014/10/04 职场文书
家长学校教学计划
2015/01/19 职场文书
毕业生党员个人总结
2015/02/14 职场文书
毕业论文致谢格式模板
2015/05/14 职场文书