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 写类方式之四
Jul 05 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
Jun 14 Javascript
web前端设计师们常用的jQuery特效插件汇总
Dec 07 Javascript
浅谈javascript获取元素transform参数
Jul 24 Javascript
JavaScript数组合并的多种方法
May 22 Javascript
深入理解JavaScript定时机制
Oct 27 Javascript
js实现股票实时刷新数据案例
May 14 Javascript
jQuery实现的两种简单弹窗效果示例
Apr 18 jQuery
如何使用CSS3+JQuery实现悬浮墙式菜单
Jun 18 jQuery
bootstrap table实现横向合并与纵向合并
Jul 18 Javascript
JavaScript实现简单计算器功能
Dec 19 Javascript
JS常用跨域方法实现原理解析
Dec 09 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/03/04 星际争霸
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
JQuery 学习笔记 选择器之二
2009/07/23 Javascript
javascript利用控件对windows的操作实现原理与应用
2012/12/23 Javascript
javascript里模拟sleep(两种实现方式)
2013/01/25 Javascript
js给onclick事件赋值,动态传参数实例解说
2013/03/28 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
判断javascript的数据类型(示例代码)
2013/12/11 Javascript
javascript的document.referrer浏览器支持、失效情况总结
2014/07/18 Javascript
js实现背景图片感应鼠标变化的方法
2015/02/28 Javascript
简介JavaScript中Math.cos()余弦方法的使用
2015/06/15 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
点评js异步加载的4种方式
2015/12/22 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
Vue.js用法详解
2017/11/13 Javascript
Vue Promise的axios请求封装详解
2018/08/13 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
vue中img src 动态加载本地json的图片路径写法
2019/04/25 Javascript
微信小程序实现图片选择并预览功能
2019/07/25 Javascript
vue中改变滚动条样式的方法
2020/03/03 Javascript
全面解析JavaScript Module模式
2020/07/24 Javascript
JS实现超级好看的鼠标小尾巴特效
2020/12/01 Javascript
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
python 重定向获取真实url的方法
2018/05/11 Python
详解python如何在django中为用户模型添加自定义权限
2018/10/15 Python
python队列原理及实现方法示例
2019/11/27 Python
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
葡萄牙鞋子品牌:Fair
2016/12/10 全球购物
欧缇丽美国官网:Caudalie美国
2016/12/31 全球购物
《美丽的南沙群岛》教学反思
2014/04/27 职场文书
机电系毕业生求职信
2014/07/11 职场文书
趣味运动会开幕词
2015/01/28 职场文书
音乐会主持人开场白
2015/05/28 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书
教你怎么用Python selenium操作浏览器对象的基础API
2021/06/23 Python