Element ui 下拉多选时新增一个选择所有的选项


Posted in Javascript onAugust 21, 2019

项目里经常会用到,在一个多选下拉框里新增一个选择所有的选项,例如:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
  <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css" rel="external nofollow" rel="external nofollow" >
  <script src="https://unpkg.com/element-ui/lib/index.js"></script>
</head>
<body>
  <div id="app">
    <el-form>
      <el-form-item>
        <el-select placeholder="请选择活动区域" multiple v-model="citys">
           <el-option v-for="item in cities" :label="item.label" :value="item.value" :key="item.value"></el-option>
        </el-select>
       </el-form-item>
     </el-form>
  </div>
  <script>
    new Vue({
      el:"#app",
      data:{
        cities: [
          {value: 'Beijing',label: '北京'}, 
          {value: 'Shanghai',label: '上海'}, 
          {value: 'Nanjing',label: '南京'}, 
          {value: 'Chengdu',label: '成都'}, 
          {value: 'Shenzhen',label: '深圳'}, 
          {value: 'Guangzhou',label: '广州'}
        ],
        citys:[]
      }
    })
  </script>
</body>
</html>

渲染如下:

Element ui 下拉多选时新增一个选择所有的选项

此时可以多选,如果想要选择所有选项时,得一个个去点击,这样不是很方便,我们可以在下拉框里新增一个选择所有的选项,通过watch用几行代码就可以实现与其它选项的互斥来实现一键多选,如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
  <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css" rel="external nofollow" rel="external nofollow" >
  <script src="https://unpkg.com/element-ui/lib/index.js"></script>
</head>
<body>
  <div id="app">
    <el-form>
      <el-form-item>
        <el-select placeholder="请选择活动区域" multiple v-model="citys">
          <el-option label="选择所有" value="all"></el-option>
           <el-option v-for="item in cities" :label="item.label" :value="item.value" :key="item.value"></el-option>
        </el-select>
       </el-form-item>
     </el-form>
  </div>
  <script>
    new Vue({
      el:"#app",
      data:{
        cities: [
          {value: 'Beijing',label: '北京'}, 
          {value: 'Shanghai',label: '上海'}, 
          {value: 'Nanjing',label: '南京'}, 
          {value: 'Chengdu',label: '成都'}, 
          {value: 'Shenzhen',label: '深圳'}, 
          {value: 'Guangzhou',label: '广州'}
        ],
        citys:[]
      },
      watch:{
        citys:function(val,oldval){
          if(val.indexOf('all')!=-1 && oldval.indexOf('all')==-1 && val.length>1){           //如果新的选择里有勾选了选择所有选择所有 则 只直线勾选所有整个选项
            this.citys=['all'];
          }else if(index = val.indexOf('all')!=-1 && oldval.indexOf('all')!=-1 && val.length>1){    //如果操作前有勾选了选择所有且当前也选中了勾选所有且勾选数量大于1 则移除掉勾选所有
            this.citys.splice(val.indexOf('all'),1)
          }
        }
      }
    })
  </script>
</body>
</html>

这样就可以互斥了,我们选择北京和上海时,选择器如下:

Element ui 下拉多选时新增一个选择所有的选项

点击选择所有时,如下:

Element ui 下拉多选时新增一个选择所有的选项

然后再点击其它选项,选择所有就会取消勾选了,例如选择深圳:

Element ui 下拉多选时新增一个选择所有的选项

这样实现了选择所有和其它选择项的互斥,而其它选择又可以多选。

总结

以上所述是小编给大家介绍的Element ui 下拉多选时新增一个选择所有的选项,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
JQuery 简便实现页面元素数据验证功能
Mar 24 Javascript
Expandable &quot;Detail&quot; Table Rows
Aug 29 Javascript
js加密解密字符串可自定义密码因子
May 13 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
Oct 20 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
Jun 22 Javascript
JavaScript字符串对象
Jan 14 Javascript
vue组件间通信解析
Mar 01 Javascript
BootStrap中的Fontawesome 图标
May 25 Javascript
小程序分享模块超级详解(推荐)
Apr 10 Javascript
详解ES6 export default 和 import语句中的解构赋值
May 28 Javascript
javascript面向对象三大特征之封装实例详解
Jul 24 Javascript
教你一步步实现一个简易promise
Nov 02 Javascript
js时间转换毫秒的实例代码
Aug 21 #Javascript
VUE的history模式下除了index外其他路由404报错解决办法
Aug 21 #Javascript
详解webpack引用jquery(第三方模块)的三种办法
Aug 21 #jQuery
jqGrid表格底部汇总、合计行footerrow处理
Aug 21 #Javascript
Vue仿微信app页面跳转动画效果
Aug 21 #Javascript
Angular 中使用 FineReport不显示报表直接打印预览
Aug 21 #Javascript
深入理解Vue keep-alive及实践总结
Aug 21 #Javascript
You might like
从一个不错的留言本弄的mysql数据库操作类
2007/09/02 PHP
PHP中定义数组常量(array常量)的方法
2014/11/17 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
jquery的live使用注意事项
2014/02/18 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
javascript中AJAX用法实例分析
2015/01/30 Javascript
js实现的下拉框二级联动效果
2016/04/30 Javascript
一个超简单的jQuery回调函数例子(分享)
2016/08/08 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
2016/08/24 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
2016/10/24 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
jQuery动态添加.active 实现导航效果代码思路详解
2017/08/29 jQuery
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
vue fetch中的.then()的正确使用方法
2020/04/17 Javascript
Linux 发邮件磁盘空间监控(python)
2016/04/23 Python
老生常谈Python基础之字符编码
2017/06/14 Python
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
完美解决安装完tensorflow后pip无法使用的问题
2018/06/11 Python
用Python shell简化开发
2018/08/08 Python
使用pygame写一个古诗词填空通关游戏
2019/12/03 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
parser.add_argument中的action使用
2020/04/20 Python
Python抓包并解析json爬虫的完整实例代码
2020/11/03 Python
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
Unix如何添加新的用户
2014/08/20 面试题
教师年度考核评语
2014/04/28 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
学前教育专业求职信
2014/09/02 职场文书
房屋租赁协议书
2014/10/18 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
springboot+WebMagic+MyBatis爬虫框架的使用
2021/08/07 Java/Android
MySQL七种JOIN类型小结
2021/10/24 MySQL
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python