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 相关文章推荐
ExtJS4如何给同一个formpanel不同的url
May 02 Javascript
详解addEventListener的三个参数之useCapture
Mar 16 Javascript
关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库
Nov 30 Javascript
javascript 组合按键事件监听实现代码
Feb 21 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
May 05 Javascript
Vue computed计算属性的使用方法
Jul 14 Javascript
Vue的土著指令和自定义指令实例详解
Feb 04 Javascript
jQuery实现定时隐藏对话框的方法分析
Feb 12 jQuery
对Vue table 动态表格td可编辑的方法详解
Aug 28 Javascript
vue实现绑定事件的方法实例代码详解
Jun 20 Javascript
浅谈Vue项目骨架屏注入实践
Aug 05 Javascript
js中forEach,for in,for of循环的用法示例小结
Mar 14 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中Session引起的脚本阻塞问题解决办法
2014/04/08 PHP
php截取中文字符串函数实例
2015/02/23 PHP
php使用递归函数实现数字累加的方法
2015/03/16 PHP
PHP设计模式之迭代器模式
2016/06/17 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
2019/04/02 PHP
浅析JavaScript中的CSS属性及命名规范
2013/11/28 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
JS的参数传递示例介绍
2014/02/08 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
jQuery获取上传文件的名称的正则表达式
2015/05/21 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
jQuery获取table行数并输出单元格内容的实现方法
2016/06/30 Javascript
微信小程序 弹幕功能简单实例
2017/02/14 Javascript
Angular使用 ng-img-max 调整浏览器中的图片的示例代码
2017/08/17 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
记录一篇关于redux-saga的基本使用过程
2018/08/18 Javascript
JSON是什么?有哪些优点?JSON和XML的区别?
2019/04/29 Javascript
vue中音频wavesurfer.js的使用方法
2020/02/20 Vue.js
python基础之入门必看操作
2017/07/26 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
2018/10/21 Python
打包python 加icon 去掉cmd黑窗口方法
2019/06/24 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
HTML5页面中尝试调起APP功能
2017/09/12 HTML / CSS
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
毕业生个人投资创业计划书
2014/01/04 职场文书
企业演讲比赛主持词
2014/03/18 职场文书
四年级学生评语大全
2014/04/21 职场文书
检讨书大全
2015/01/27 职场文书
2015年安全员工作总结范文
2015/04/22 职场文书
导游词之青城山景区
2019/09/27 职场文书
深入浅出讲解Java8函数式编程
2022/01/18 Java/Android
Vue监视数据的原理详解
2022/02/24 Vue.js