复选框选中第3个时取消第1个

这篇博客展示了如何使用Vue.js实现一个可选择的列表,点击图片切换选项状态,并动态管理显示的选择项。当选择超过一定数量时,会自动移除最早的选择。此外,还提供了列表项的增删功能,适用于多选场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现代码:

html代码:
<template>
  <div>
    <div class="container" v-for="(item, index) in choiceData" :key="index">
      <img  :src="item.checked ? require('../assets/active.png'):require('../assets/default.png')"  @click="changeStatus(item)" />
      <div>{{ item.name }}</div>
    </div>
  </div>
</template>

javascript:
<script>
export default {
  components: {},
  data() {
    return {
      choiceData: [
        {
          value: "1",
          name: "外来原因",
          checked: false,
        },
        {
          value: "2",
          name: "手机卡顿不好使",
          checked: false,
        },
        {
          value: "3",
          name: "内容复杂,不符合要求",
          checked: false,
        },
        {
          value: "4",
          name: "实名认证暴露信息",
          checked: false,
        },
        {
          value: "5",
          name: "安全/隐私顾虑",
          checked: false,
        },
        {
          value: "0",
          name: "其他",
          checked: false,
        },
      ],
      show:[]
    };
  },
  // 监听属性 类似于data概念
  computed: {},
  // 监控data中的数据变化
  watch: {},
  // 方法集合
  methods: {
    changeStatus(item){
      item.checked = !item.checked

      if(item.checked){
        this.show.unshift(item)
      }else{
        this.show.forEach((m,index)=>{
          if(item.name == m.name){
            this.show.splice(index,1)
          }
        })
      }
     
     this.showChecked()
    },

    showChecked(){
      // 选中第三个的时候,删除第一选中的元素
      if(this.show.length >2){
        this.show.splice(this.show.length-1,1)
      }

      this.choiceData.forEach((item)=>{
        return item.checked = false
      })
     
     // checked为true的展示
      this.show.forEach((i)=>{
        this.choiceData.forEach((res)=>{
          if(i.name == res.name){
            return res.checked = true
          }
        })
      })
    }
  },
};
</script>

效果展示:
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值