vue 两个文本框只允许一个输入

今天项目中又一个需求就是两个文本框只允许一个输入,因为也是初学vue,这个功能也没有实现过,急了半天才解决。。。

言归正传:现在有两个文本框

<label class="m-t-10 m-l-10 pull-left">电脑:</label>
      <div class="col-md-3">
      <input type="text"  v-model="computer" class="form-control" placeholder="电脑" v-bind:readonly="pMobile">
 </div>
<label class="m-t-10 m-l-10 pull-left">手机:</label>
      <div class="col-md-3">
      <input type="text"  v-model="mobile" class="form-control" placeholder="手机" v-bind:readonly="mPassport">
      </div>

我是通过v-bind:readonly="flag"来控制它们是否只读,起初都设为false,意味着不是“readonly”,在watch中通过v-model来监控这两个文本框值,如果一个框输入了文本,它的长度就会发生变化,变为大于0,这时把另一个文本框的flag设为true,另一个框就变成了只读的,如果它的文本长度重新变为0,就把另一个的值置为false,又变为了可读可写。deep:true,意为深度监视,只要值发生了变化,就响应。下面上代码:

watch:{
    computer: {
      deep: true,
      handler: function (val) {
        if (val.length > 0) {
          this.mPassport = true
        } else {
          this.mPassport = false
        }
      }
    },
    mobile: {
      deep: true,
      handler: function (val) {
        if (val.length > 0) {
          this.pMobile = true
        } else {
          this.pMobile = false
        }
      }
    },
 ......
}

需要注意的是这两个flag需要在data中声明,并赋初值为false。

data () {
    return {
      pMobile: false,
      mPassport: false
    }
  },

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值