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 相关文章推荐
WordPress 插件——CoolCode使用方法与下载
Jul 02 Javascript
HTML中事件触发列表与解说
Jul 09 Javascript
js点击更换背景颜色或图片的实例代码
Jun 25 Javascript
js网页右下角提示框实例
Oct 14 Javascript
jQuery中Ajax的get、post等方法详解
Jan 20 Javascript
jQuery实现的背景动态变化导航菜单效果
Aug 24 Javascript
深入剖析JavaScript面向对象编程
Jul 12 Javascript
jQuery下拉菜单的实现代码
Nov 03 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
Feb 07 Javascript
ES6如何用一句代码实现函数的柯里化
Jan 18 Javascript
jQuery加PHP实现图片上传并提交的示例代码
Jul 16 jQuery
解决echarts图表使用v-show控制图表显示不全的问题
Jul 19 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选项与信息函数的使用详解
2013/05/10 PHP
php生成短网址示例
2014/05/05 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
2014/06/23 PHP
js 图片缩放(按比例)控制代码
2009/05/27 Javascript
一个jquery实现的不错的多行文字图片滚动效果
2014/09/28 Javascript
node.js中的fs.closeSync方法使用说明
2014/12/17 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
AngularJS实现全选反选功能
2015/12/08 Javascript
ES6所改良的javascript“缺陷”问题
2016/08/23 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
2017/10/24 Javascript
通过jquery toggleClass()属性制作文章段落更改背景颜色
2018/05/21 jQuery
使用JavaScript中的lodash编写双色球效果
2018/06/24 Javascript
VueJS 组件参数名命名与组件属性转化问题
2018/12/03 Javascript
express+vue+mongodb+session 实现注册登录功能
2018/12/06 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
分享一款超好用的JavaScript 打包压缩工具
2020/04/26 Javascript
JSONP 的原理、理解 与 实例分析
2020/05/16 Javascript
Vue左滑组件slider使用详解
2020/08/21 Javascript
在Python中操作文件之truncate()方法的使用教程
2015/05/25 Python
python实现多层感知器MLP(基于双月数据集)
2019/01/18 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
2020/06/05 Python
利用Python发送邮件或发带附件的邮件
2020/11/12 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
html5指南-3.如何实现html元素拖拽功能
2013/01/07 HTML / CSS
美国大码时尚女装购物网站:ELOQUII
2017/12/28 全球购物
英国领先的家庭时尚品牌:Peacocks
2018/01/11 全球购物
颇特女士香港官网:NET-A-PORTER香港
2021/03/08 全球购物
新闻专业个人求职信
2013/12/19 职场文书
银行内勤岗位职责
2014/04/09 职场文书
房屋认购协议书
2015/01/29 职场文书
学习保证书怎么写
2015/02/26 职场文书
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL
Win10鼠标宏怎么设置?win10系统鼠标宏的设置方法
2022/08/14 数码科技