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遍历checkbox获取选中项value值的方法
Feb 13 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
Mar 03 Javascript
jQuery filter函数使用方法
May 19 Javascript
Bootstrap媒体对象学习使用
Mar 07 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
May 08 Javascript
React Native开发封装Toast与加载Loading组件示例
Sep 08 Javascript
javascript实现图片轮播代码
Jul 09 Javascript
jQuery中DOM常见操作实例小结
Aug 01 jQuery
JS实现网页端猜数字小游戏
Mar 06 Javascript
JS Web Flex弹性盒子模型代码实例
Mar 10 Javascript
Node.js 深度调试方法解析
Jul 28 Javascript
OpenLayers3实现地图显示功能
Sep 25 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 日期加减的类,很不错
2009/10/10 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
php中get_meta_tags()、CURL与user-agent用法分析
2014/12/16 PHP
php中关于socket的系列函数总结
2015/05/18 PHP
Yii使用技巧大汇总
2015/12/29 PHP
php中通用的excel导出方法实例
2017/12/30 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
js三种排序算法分享
2012/08/16 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
2014/12/29 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
在网页中插入百度地图的步骤详解
2016/12/02 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
2018/09/29 Javascript
详解微信小程序调用支付接口支付
2019/04/28 Javascript
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 Javascript
Python Web开发模板引擎优缺点总结
2014/05/06 Python
python中子类继承父类的__init__方法实例
2016/12/15 Python
Python实现的爬虫功能代码
2017/06/24 Python
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
python3解析库BeautifulSoup4的安装配置与基本用法
2018/06/26 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
2019/04/02 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
浅析python中的del用法
2020/09/02 Python
人力资源管理专业应届生求职信
2013/09/28 职场文书
小组合作学习反思
2014/02/18 职场文书
青春寄语大全
2014/04/09 职场文书
2014年五四青年节活动策划书
2014/04/22 职场文书
2016继续教育研修日志
2015/11/13 职场文书
2016春季小学开学寄语
2015/12/03 职场文书
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技