在 element 中实现数组表单校验
- 定义好需要校验的表单数据
- 定义好数组数据校验规则
- 数组元素校验需要使用
[index][field]
prop 对应元素路径 - 如果校验当前元素与上一个元素的关系,需要在数组元素校验规则中添加
[field]
属性 - 在对应的数组元素 rules 上挂载校验规则
下面是校验数组元素例子
<el-form :model="formData">
<div v-for="(item, index) in formData.list" :key="index">
低于
<el-form-item
:prop="`list[${index}].date`"
:rules="[
{
...fieldsRules.date[0],
prevDate: index > 0 ? formData.list[index - 1].date : 0
}
]"
><el-input type="number" v-model="formData.list[index].date" /> </el-form-item
>
</div>
</el-form>
...
data(){
return {
formData: {
list: [
{
date: 100
},
{
date: 200
}
]
},
fieldsRules: {
date: [
{
trigger: 'blur',
validator: (rule, value, callback) => {
console.log(value, 'valueee');
console.log(rule, 'rule');
if (!value) {
callback(new Error('请输入时间'));
}
if (Number(value) <= Number(rule.prevDate)) {
callback(new Error('时间必须大于上一条规则'));
}
callback();
}
}
]
},
}
}