表单验证时如何动态控制某个字段的必填状态?
我用的是 Vue 3 + Element Plus,有个场景是:当用户选择“其他”选项时,才需要填写一个额外的输入框。但我发现即使我把该字段的 required 规则动态改成 false,表单校验还是会报错。
我试过在 rules 里用函数返回动态规则,也试过在 change 事件里重新赋值整个 rules 对象,但都不太稳定。下面是我目前的写法:
const rules = reactive({
reason: [
{
required: () => selectedOption.value === 'other',
message: '请输入具体原因',
trigger: 'blur'
}
]
})
但这样写好像不生效,校验逻辑没更新。到底该怎么正确实现动态必填呢?
记得在 template 里给 el-form 加上 ref="formRef"。这下应该稳了,别忘了处理好表单引用的初始化。