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的AutoComplete插件
May 04 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
Aug 28 Javascript
JS上传前预览图片实例
Mar 25 Javascript
jQuery实现点击标题输入详细信息
Apr 16 Javascript
如何让DIV可编辑、可拖动示例代码
Sep 18 Javascript
Javascript 多物体运动的实现
Dec 24 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
Apr 06 Javascript
BootStrap表单控件之文本域textarea
May 23 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
Jul 09 Javascript
JS设计模式之访问者模式定义与用法分析
Feb 05 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
Sep 11 Javascript
简单了解JavaScript作用域
Jul 31 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递归json类实例
2014/12/02 PHP
php中二维数组排序问题方法详解
2015/08/28 PHP
详解PHP实现执行定时任务
2015/12/21 PHP
Zend Framework教程之MVC框架的Controller用法分析
2016/03/07 PHP
深入理解PHP中的count函数
2016/05/31 PHP
JQuery上传插件Uploadify使用详解及错误处理
2010/04/27 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
2011/09/20 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
javascript创建和存储cookie示例
2014/01/07 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
JQuery 传送中文乱码问题的简单解决办法
2016/05/24 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
2017/01/04 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
JS实现的简单拖拽功能示例
2017/03/13 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
微信小程序缓存过期时间的使用详情
2019/05/12 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
JSON获取属性值方法代码实例
2020/06/30 Javascript
JavaScript 如何在浏览器中使用摄像头
2020/12/02 Javascript
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
python直接访问私有属性的简单方法
2016/07/25 Python
Python 转义字符详细介绍
2017/03/21 Python
Python 查找字符在字符串中的位置实例
2018/05/02 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
python multiprocessing多进程变量共享与加锁的实现
2019/10/02 Python
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
用CSS3实现瀑布流布局的示例代码
2017/11/10 HTML / CSS
美国顶级品牌男士大码服装店:DXL
2017/08/30 全球购物
ProBikeKit德国:在线公路自行车专家
2018/06/03 全球购物
应聘教师自荐信
2013/10/12 职场文书
应届生幼儿园求职信
2013/11/12 职场文书
人民教师的自我评价分享
2014/02/21 职场文书
Python趣味挑战之用pygame实现简单的金币旋转效果
2021/05/31 Python