vue点击标签切换选中及互相排斥操作


Posted in Javascript onJuly 17, 2020

单身和已婚不能同时选中,不了解保险和已了解保险不能同时选中。

同时各个标签点击可以取消选择

vue点击标签切换选中及互相排斥操作

//html
  <li>
   <span class="fill-title">与我相关</span>
   <div>
   <van-button
    v-for="(item, index) in myself"
    :key="index"
    @click="checkButton('myself', item.id)"
    :class="item.isFlag ? 'current' : ''"
   >{{item.title}}</van-button>
   </div>
  </li>
  <li>
   <span class="fill-title">标签</span>
   <div>
   <van-button
    v-for="item in biaoqian"
    :key="item.id"
    @click="checkButton('tag', item.id)"
    :class="item.isFlag ? 'current' : ''"
   >{{item.title}}</van-button>
   </div>
  </li>

数据

myself: [
  { id: 1,title: "亲属", isFlag: false },
  {id: 2,title: "同乡",isFlag: false},
  {id: 3, title: "同学",isFlag: false },
  {id: 4,title: "同事", isFlag: false},],
  biaoqian: [
  {id: 1, title: "已婚",type: 1,isFlag: false },
  {id: 2,title: "单身",type: 1,isFlag: false },
  {id: 3,title: "有娃",isFlag: false },
  {id: 4,title: "有房", isFlag: false },
  {id: 5,title: "有车",isFlag: false},
  {id: 6,title: "不了解保险",isFlag: false,type: 2},
  {id: 7,title: "已了解保险",isFlag: false,type: 2} ],

js

//标签只能选中一个
 filterData(arr = [], index) {
  let val = "";
  arr.forEach(item => {
  if (item.id == index) {
   item.isFlag = !item.isFlag;
   val = item.isFlag ? item.title : "";
  } else {
   item.isFlag = false;
  }
  });
  return val;
 },
 checkButton(val, index) {
  if (val === "tag") {
  let data = [];
  this.biaoqian.forEach(item => {
   if (item.id == index) {
   // a 记录当前标签状态是否选中,为了取消标签状态
   let a = item.isFlag;
   item.isFlag = !item.isFlag;
   if (item.type) {
    this.biaoqian.forEach(e => {
    if ((e.type == 1 && index < 3) || (e.type == 2 && index > 5)) {
     //先把同一个类型的标签都置为false
     e.isFlag = false;
     if (e.id == index) {
     e.isFlag = a ? false : !e.isFlag;
     }
    }
    });
   }
   }
  });
  let arr = this.biaoqian.filter(item => {
   return item.isFlag;
  });
  arr.forEach(item => {
   data.push(item.title);
  });
  this.personItem.labelList = data;
  } else if (val === "sex") {
  this.personItem.sex = this.filterData(this.sexArr, index);
  } else {
  this.personItem.relation = this.filterData(this.myself, index);
  }
 }

补充知识:vue选中与取消简单实现

我就废话不多说了,大家还是直接看代码吧~

<li v-for="(item,index) in assign" 
  :key="index"
  @click="selected(item)"
  :class="{'active':item.isShow}">

selected(item) {
        if (!item.isShow) {
          item.isShow = true;
          this.selectedList.push(item.id)
        } else {
          item.isShow = false;
          let index = this.selectedList.indexOf(item.id);
          if (index > -1) {
            this.selectedList.splice(index, 1);
          }
        }
      },

以上这篇vue点击标签切换选中及互相排斥操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery入门知识简介
Mar 04 Javascript
两种简单实现菜单高亮显示的JS类代码
Jun 27 Javascript
document.addEventListener使用介绍
Mar 07 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
Mar 09 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
Apr 11 Javascript
JavaScript ES6中export、import与export default的用法和区别
Mar 14 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
Mar 17 Javascript
js实现图片轮播效果学习笔记
Jul 26 Javascript
vue在使用ECharts时的异步更新和数据加载详解
Nov 22 Javascript
Vue中的作用域CSS和CSS模块的区别
Oct 09 Javascript
如何使用VuePress搭建一个类型element ui文档
Feb 14 Javascript
浅谈JS中this在各个场景下的指向
Aug 14 Javascript
Vue点击切换Class变化,实现Active当前样式操作
Jul 17 #Javascript
JS this关键字在ajax中使用出现问题解决方案
Jul 17 #Javascript
vue中v-for循环选中点击的元素并对该元素添加样式操作
Jul 17 #Javascript
在vue中对数组值变化的监听与重新响应渲染操作
Jul 17 #Javascript
Vue项目中数据的深度监听或对象属性的监听实例
Jul 17 #Javascript
解决vue无法侦听数组及对象属性的变化问题
Jul 17 #Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
Jul 17 #Javascript
You might like
php微信公众账号开发之前五个坑(一)
2016/09/18 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
setInterval,setTimeout与jquery混用的问题
2013/04/08 Javascript
BootStrap glyphicon图标无法显示的解决方法
2016/09/06 Javascript
Vue.js常用指令的使用小结
2017/06/23 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
2017/07/18 jQuery
详解vue移动端日期选择组件
2018/02/22 Javascript
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
vue中各种通信传值方式总结
2019/02/14 Javascript
使用Vue 自定义文件选择器组件的实例代码
2020/03/04 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
three.js 实现露珠滴落动画效果的示例代码
2021/03/01 Javascript
[01:04:39]OG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[01:32]dota2拉比克至宝(222)
2018/12/20 DOTA
Python内置数据结构与操作符的练习题集锦
2016/07/01 Python
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
Python单例模式实例详解
2017/03/01 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
2019/08/07 Python
Python 3.8 新功能大揭秘【新手必学】
2020/02/05 Python
对python pandas中 inplace 参数的理解
2020/06/27 Python
Python 调用 ES、Solr、Phoenix的示例代码
2020/11/23 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
团员学习总结的自我评价范文
2013/10/14 职场文书
采购员的工作职责
2013/12/26 职场文书
新学期班主任寄语
2014/01/18 职场文书
法学专业求职信
2014/07/15 职场文书
公司离职证明标准范本
2014/10/05 职场文书
2014年仓库保管员工作总结
2014/12/03 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书
逃课检讨书怎么写
2015/01/01 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书