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也能包含文件
Oct 26 Javascript
解决FLASH需要点击激活的代码
Dec 20 Javascript
contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
Sep 13 Javascript
js获取某元素的class里面的css属性值代码
Jan 16 Javascript
使用javascript控制cookie显示和隐藏背景图
Feb 12 Javascript
深入探密Javascript数组方法
Jan 08 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
Jan 08 Javascript
AngularJS中controller控制器继承的使用方法
Nov 03 Javascript
JS函数内部属性之arguments和this实例解析
Oct 07 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
Dec 20 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
Feb 20 Javascript
layui实现数据分页功能(ajax异步)
Jul 27 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版
2016/07/21 PHP
PHP中include()与require()的区别说明
2017/02/14 PHP
js资料toString 方法
2007/03/13 Javascript
javascript 实现父窗口引用弹出窗口的值的脚本
2007/08/07 Javascript
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
2010/06/19 Javascript
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
jQuery实现的多级下拉菜单效果代码
2015/08/24 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
用canvas 实现个图片三角化(LOW POLY)效果
2016/02/18 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
JS常见算法详解
2017/02/28 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
2017/10/27 Javascript
从setTimeout看js函数执行过程
2017/12/19 Javascript
如何在vue里添加好看的lottie动画
2018/08/02 Javascript
p5.js绘制创意自画像
2019/11/04 Javascript
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
JavaScript实现答题评分功能页面
2020/06/24 Javascript
Ubuntu 下 vim 搭建python 环境 配置
2017/06/12 Python
Python应用库大全总结
2018/05/30 Python
python3+opencv生成不规则黑白mask实例
2020/02/19 Python
HTML5拖放效果的实现代码
2016/11/17 HTML / CSS
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
社区国庆节活动方案
2014/02/05 职场文书
销售主管岗位职责范本
2014/02/14 职场文书
房地产财务部员工岗位职责
2014/03/12 职场文书
党的群众路线教育实践活动总结报告
2014/04/28 职场文书
教师节标语大全
2014/10/07 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
毕业论文致谢格式模板
2015/05/14 职场文书
开学第一周日记(三篇范文)
2019/08/23 职场文书
2020年基层司法所建设情况调研报告
2019/11/30 职场文书
jdbc中自带MySQL 连接池实践示例
2022/07/23 MySQL