elementUI el-select多选设置必填和非必填反显时表单验证不通过

博客讲述了在Vue项目中使用ElementUI时遇到的一个问题,即el-select多选框在动态设置必填和非必填状态时,表单验证无法正常通过。作者在尝试了多种解决方案,如初始化isHaveTo属性、使用this.nextTick更新数据等后,最终发现是因为同一个el-form-item中,input框和el-select的v-model不同,但prop只设置了input框的v-model导致的。解决方法是将输入框和选择框分开为两个el-form-item,分别绑定不同的prop,从而确保反显时验证正确。

最近碰到了一个需求,让一个字段动态设置必填和非必填

借鉴了https://blog.youkuaiyun.com/weixin_37865166/article/details/92431597这篇文件,默认在初始页面完成后

computed: {
    isHaveTo: function() {
      return this.isOfficeHaveTo
    }
  },

此处需要注意的是isHaveTo的初始化。 而isOfficeHaveTo则是根据数据和字段,动态更改的的属性。
isHaveTo的用法:
在这里插入图片描述
在这里插入图片描述

所有的都已经完成,但是在编辑反显的时候,默认点开页面直接提示该字段不能为空,而我又打印了数据发现没有问题,第一时间想的是没有用set去更新一遍数据,发现之后还是不行,又用了this.set去更新一遍数据,发现之后还是不行,又用了this.setthis.nextTick(() => {})中设置$set,isOfficeHaveTo为true或者false。

其实逻辑没问题,排除了不是表单验证有问题之后发现,这个字段动态判断了input框和el-select多选框是否哪个去显示,两个的v-model名字不同,而且prop只用了input框的v-model

解决办法:
分两个el-form-item,每个prop对应v-model,这样就不会出现反显的时候,验证不通过的问题了。
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值