在工作中碰到了一个需求,就是返回数据在表单里循环显示,在提交的时候就得对表单进行循环校验,但是使用element普通的校验方法是不生效的。需要对el-form-item 设置单独的props和rules。

props中items是循环的数组,index是循环的index,后边拼接的是需要校验对象的字段名,
rules是校验规则可以再data中设置,校验方式都是一样的,
话不多说直接上代码:
<el-row :gutter="80" v-for="(shop, index) in form.items" :key="index">
<el-col :span="11">
<!--props中items是循环的对象 index是循环的index 后边拼接的是需要校验对象的字段名,
:rules是校验规则可以再data中设置 -->
<el-form-item
label="货物名称"
:prop="'items.' + index + '.name'"
:rules="itemForm.checkName"
>
<el-input v-model="shop.name" autocomplete="off"></el-input>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item
label="金额"
:prop="'items.' + index + '.subTotal'"
:rules="itemForm.checkSubTotal"
>
<el-input v-model="shop.subTotal" autocomplete="off"></el-input>
</el-form-item>
</el-col>
</el-row>
export default {
data(){
return {
itemForm:{
checkSubTotal: [
{
required: false,
trigger: "blur",
},
{
pattern: /((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/,//
message: "金额格式不正确",
trigger: "blur",
},
],
checkName: [
{
required: true,
message: "请输入货物名称",
trigger: "blur",
},
]
}
}
}
}
本文介绍了一种在Element UI框架中实现表单循环显示及校验的方法,通过设置el-form-item的prop属性来动态绑定验证规则,适用于提交时需要逐项验证的场景。
3308

被折叠的 条评论
为什么被折叠?



