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 可排列的表实现代码
Nov 13 Javascript
jquery实现文本框鼠标右击无效以及不能输入的代码
Nov 05 Javascript
Array, Array Constructor, for in loop, typeof, instanceOf
Sep 13 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
Sep 03 Javascript
jquery处理json数据实例分析
Jun 03 Javascript
创建、调用JavaScript对象的方法集锦
Dec 24 Javascript
解决JS无法调用Controller问题的方法
Dec 31 Javascript
封装获取dom元素的简单实例
Jul 08 Javascript
node-sass安装失败的原因与解决方法
Sep 04 Javascript
vue-cli常用设置总结
Feb 24 Javascript
JavaScript实现美化滑块效果
May 17 Javascript
如何使用Javascript中的this关键字
May 28 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
新浪微博API开发简介之用户授权(PHP基础篇)
2011/09/25 PHP
解析在zend Farmework下如何创立一个FORM表单
2013/06/28 PHP
PHP获取一年中每个星期的开始和结束日期的方法
2015/02/12 PHP
Yii框架批量插入数据扩展类的简单实现方法
2017/05/23 PHP
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
JavaScript事件处理器中的event参数使用介绍
2013/05/24 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
2013/08/11 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
js实现鼠标划过给div加透明度的方法
2015/05/25 Javascript
js中substring和substr两者区别和使用方法
2015/11/09 Javascript
jquery简单插件制作(fn.extend)完整实例
2016/05/24 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
常用的javascript设计模式
2017/01/11 Javascript
关于vuex的学习实践笔记
2017/04/05 Javascript
ionic 自定义弹框效果
2017/06/27 Javascript
jQuery 1.9版本以上的浏览器判断方法代码分享
2017/08/28 jQuery
webpack+vue-cil中proxyTable处理跨域的方法
2018/07/20 Javascript
Node.js API详解之 dgram模块用法实例分析
2020/06/05 Javascript
微信小程序实现列表左右滑动
2020/11/19 Javascript
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
[01:10]为家乡而战!完美世界城市挑战赛全国总决赛花絮
2019/07/25 DOTA
windows、linux下打包Python3程序详细方法
2020/03/17 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
2020/04/11 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
解析HTML5中的新功能本地存储localStorage
2016/03/01 HTML / CSS
安卓程序员求职信
2014/02/28 职场文书
2014国庆黄金周超市促销活动方案
2014/09/21 职场文书
在教室放鞭炮的检讨书
2014/09/28 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
辞职信标准格式
2015/02/27 职场文书
保安辞职信范文
2015/02/28 职场文书
2015小学语文教师个人工作总结
2015/05/20 职场文书
用Python爬取某乎手机APP数据
2021/06/15 Python
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js
Python使用pandas导入csv文件内容的示例代码
2022/12/24 Python