Ant Design Vue 解决表单验证+多选框引发的输入值不生效问题

开发环境

Vue 2

Ant-Design-Vue 1.7.1

问题复现

一个弹框组件采用了Ant Design Vue,包含一个多选框和一个输入框,整体格式为:

<a-form-model
 ref="ruleForm"
 :model="form"
 :rules="rules"
 :label-col="labelCol"
 :wrapper-col="wrapperCol"
>
	<a-form-model-item prop="nation">
     	<a-select
               mode="multiple"
               v-model="nation"
               :options="regionOptions"
               @change="onNationChange"
               style="width:600px;">
     	</a-select>
    </a-form-model-item>
    <a-form-model-item prop="bidFloor">
        <a-input v-model="form.bidFloor" type="number" style="width:600px;"/>
    </a-form-model-item>
</a-form-model>
rules: {
	country: [{ required: true, message: this.$t('mintAdNetwork.nationRegionErrorMessage'), trigger: 'change'}]
}

出现问题:当选择国家时,不管是否有选项都提示nation is required

而取消掉验证规则的required: true发现发送的接口信息里nation是有值的

可能会有疑问:这里为什么不用form.nation因为Ant Design Vue 的多选框v-model必须绑定一级字段,否则出现无法特定情况下无法点击选项的bug 所以这里采用了nation这个中间值并且在onNationChange方法里对form.country进行赋值

但矛盾的是,propnation又是在form里找的

所以问题发现了:在propnation中找不到form

解决方法

prop="nation"改成prop="country" 直接跳过中间值验证即可,注意规则里也应该对应修改

<a-form-model
 ref="ruleForm"
 :model="form"
 :rules="rules"
 :label-col="labelCol"
 :wrapper-col="wrapperCol"
>
	<a-form-model-item prop="country">
     	<a-select
               mode="multiple"
               v-model="nation"
               :options="regionOptions"
               @change="onNationChange"
               style="width:600px;">
     	</a-select>
    </a-form-model-item>
    <a-form-model-item prop="bidFloor">
        <a-input v-model="form.bidFloor" type="number" style="width:600px;"/>
    </a-form-model-item>
</a-form-model>

解决问题!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值