vue+iview单选按钮正则ruleValidate校验必填和非必填

 

 如图左侧单选按钮和右侧输入框联动必填和非必填

<FormItem
            label="是否需要备注:"
            prop="is_need_meeting">
            <RadioGroup
              v-model="applicationForm.is_need_meeting">
              <Radio
                label="1">是</Radio>
              <Radio
                label="0">否</Radio>
            </RadioGroup>
          </FormItem>

<FormItem
            :rules="applicationForm.is_need_meeting==='0'? ruleValidate.meeting_room : meetingR"
            prop="meeting_room"
            label="备注:">
            <Input
              :disabled="applicationForm.is_need_meeting==='0'"
              v-model="applicationForm.meeting_room"
              placeholder="请输入" />
          </FormItem>

上面是html代码,在data中定义正则校验规则

meetingR: [{ required: true, message: '此项为必填项', trigger: 'blur' }],
//在这里初始单选按钮是必填,输入框为非必填

ruleValidate: {
    is_need_meeting: [
          { required: true, message: '此项为必填项', trigger: 'change' }
        ],
meeting_room: [
          { required: false, message: '', trigger: 'blur' }
        ],
}

在watch中监测单选按钮改变,在非必填的时候清除输入框内容和提示信息

watch: {
    'applicationForm.is_need_meeting': {
      handler: function (newVal, olVal) {
        if (newVal === '0') {
          this.$set(this.applicationForm, 'meeting_room', '')
          this.$refs.formValidate.fields.forEach((e) => {
            if (e._props.prop === 'meeting_room') {
              e.resetField()
            }
          })
        }
      }
    },
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值