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 相关文章推荐
点图片上一页下一页翻页效果
Jul 09 Javascript
使用js获取QueryString的方法小结
Feb 28 Javascript
jquery实现类似淘宝星星评分功能实例
Sep 12 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
Mar 14 Javascript
javascript基于DOM实现权限选择实例分析
May 14 Javascript
jQuery实现移动端滑块拖动选择数字效果
Dec 24 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
Jun 13 Javascript
Vue列表页渲染优化详解
Jul 24 Javascript
Angular2的管道Pipe的使用方法
Nov 07 Javascript
Vue使用watch监听一个对象中的属性的实现方法
May 10 Javascript
jquery插件实现搜索历史
Apr 24 jQuery
JavaScript如何利用Promise控制并发请求个数
May 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 GD绘制24小时柱状图
2008/06/28 PHP
php5.3 注意事项说明
2013/07/01 PHP
win平台安装配置Nginx+php+mysql 环境
2016/01/12 PHP
通过JS 获取Mouse Position(鼠标坐标)的代码
2009/09/21 Javascript
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
JS实现定时自动关闭DIV层提示框的方法
2015/05/11 Javascript
IE10中flexigrid无法显示数据的解决方法
2015/07/26 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
几句话带你理解JS中的this、闭包、原型链
2016/09/26 Javascript
Canvas + JavaScript 制作图片粒子效果
2017/02/08 Javascript
javascript 的变量、作用域和内存问题
2017/04/19 Javascript
vue 中自定义指令改变data中的值
2017/06/02 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
2017/06/21 Javascript
vue.js实例对象+组件树的详细介绍
2017/10/20 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
详解jenkins自动化部署vue
2019/05/14 Javascript
微信小程序点击列表跳转到对应详情页过程解析
2019/09/26 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
2020/03/07 Javascript
[56:35]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第一局
2016/03/06 DOTA
Django中使用group_by的方法
2015/05/26 Python
python3 kmp 字符串匹配的方法
2018/07/07 Python
对python中Librosa的mfcc步骤详解
2019/01/09 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
python中adb有什么功能
2020/06/07 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
康帕斯酒店预订:Compass Hospitality(支持中文)
2018/08/23 全球购物
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
Ibood荷兰:互联网每日最佳在线优惠
2019/02/28 全球购物
Footshop乌克兰:运动鞋的最大选择
2019/12/01 全球购物
餐饮加盟计划书
2014/01/10 职场文书
材料专业毕业生求职信
2014/02/26 职场文书
食品销售计划书
2014/04/26 职场文书
工程部主管岗位职责
2015/02/12 职场文书
Python基于百度AI实现抓取表情包
2021/06/27 Python
Win7/8.1用户可以免费升级到Windows 11系统吗?
2021/11/21 数码科技