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 相关文章推荐
js几个不错的函数 $$()
Oct 09 Javascript
jquery parent和parents的区别分析
Oct 02 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
Nov 22 Javascript
用javascript添加控件自定义属性解析
Nov 25 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
May 04 Javascript
jQuery与Ajax以及序列化
Feb 01 Javascript
浅谈Cookie的生命周期问题
Aug 02 Javascript
jQuery如何解决IE输入框不能输入的问题
Oct 08 Javascript
bootstrap daterangepicker汉化以及扩展功能
Jun 15 Javascript
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
Sep 18 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
Dec 10 Javascript
Vue 监听元素前后变化值实例
Jul 29 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
php str_replace的替换漏洞
2008/03/15 PHP
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
2014/11/17 PHP
List the Codec Files on a Computer
2007/06/18 Javascript
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
有关于JS辅助函数inherit()的问题
2013/04/07 Javascript
node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
2014/11/04 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
laravel5.4+vue+element简单搭建的示例代码
2017/08/29 Javascript
Angular父子组件通过服务传参的示例方法
2018/10/31 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
2019/06/10 jQuery
在微信小程序中使用mqtt服务的方法
2019/12/13 Javascript
[01:37]DOTA2超级联赛专访ChuaN 传奇般的电竞之路
2013/06/19 DOTA
Python中zip()函数用法实例教程
2014/07/31 Python
Python深入学习之特殊方法与多范式
2014/08/31 Python
python自动结束mysql慢查询会话的实例代码
2019/10/27 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
2020/01/06 Python
Python如何对XML 解析
2020/06/28 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
python实现xml转json文件的示例代码
2020/12/30 Python
HTML5的语法变化介绍
2013/08/13 HTML / CSS
一个C/C++编程面试题
2013/11/10 面试题
绿色城市实施方案
2014/03/19 职场文书
2014医学院领导班子对照检查材料思想汇报
2014/09/19 职场文书
2014年党员评议表自我评价
2014/09/27 职场文书
报案材料怎么写
2015/05/25 职场文书
Python实战之疫苗研发情况可视化
2021/05/18 Python
Spring Bean的实例化之属性注入源码剖析过程
2021/06/13 Java/Android
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL
python flappy bird小游戏分步实现流程
2022/02/15 Python
vue使用refs获取嵌套组件中的值过程
2022/03/31 Vue.js
详解PyTorch模型保存与加载
2022/04/28 Python