Vue框架下,表单存在多个复选框时,如何选中一个同时禁用其它复选框

如标题所示,我们怎样实现下面的需求呢?


当我们选中其中一个选项时,其它的选项应该被禁用,因为我们只想提交一组数据。怎样使用 Vue.js 来实现呢?

首先我们看,如果是一个checkbox,<input type="checkbox" :disable="true">,这样就可以将其禁用。所以当有多个input 存在时,我们需要的是理清逻辑关系,让disable在何时的情况发挥作用。

禁用:(disable='true'):当有一个选项被选了且不是备选项时

不禁用:(disable='false'):当是选择的项时

理清了上述逻辑,转化成代码就一行(红笔已经标注)

<div class="activity-list" v-for="(activity,activityIndex) in existedTabSearchResults">
                  <ul class="basic-info clear-float-ml">
                    <li>
                      <input type="checkbox"
                             :disabled="chooseIndex!=activityIndex&&chooseIndex!='reset'"
                             @click="chooseActivity(activityIndex)"/>
                    </li>
                </ul>   ...

在vue实例中,有一个activityIndex ,与 chooseIndex,其中   activityIndex 是第一个活动的index,而chooseIndex的选择,则比较巧妙。初始将其设置为'reset',这个状态表明没有一个选项被选择。就是活动列表的初始状态。当选择活动时,则将chooseIndex置为这个活动的index 。当再一次点击该活动,即活动被取消,chooseIndex被置为 'reset' 。

vue实例部分的代码为:

 var vm=new Vue({
      el:'#management',
      data:{
        chooseIndex:'reset',
            },
      methods:{
var vm=new Vue({
      el:'#management',
      data:{
        chooseIndex:'reset',
        },
      methods:{   
        chooseActivity:function(index){
          if(this.chooseIndex==index){
            this.chooseIndex='reset';
          }else{
          this.chooseIndex=index;
          }
        },
... },

无论采取什么逻辑最终实现,都应理清逻辑关系。


 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值