1:动态表单校验
<el-form :model="form" ref="contractFormRef" label-width="140px" :rules="rules">
<div v-for="(item, k) in form.list" :key="k">
<div v-for="(val, i) in item.proList" :key="i">
<el-form-item
label="项目名称:"
:prop="`list[${k}].proList[${i}].name`"
:rules="[{ required: true, message: '请输入项目名称', trigger: 'blur' }]">
<el-input
v-model.trim="val.yearGasSupply"
type="text"
placeholder="请输入年合同量"
>
</el-input>
</el-form-item>
</div>
</div>
</div>
</el-form>
list = {
proList: [
{
name: ''
}
]
}
//实现方式:动态绑定prop,rules
:prop="`list[${k}].proList[${i}].name`"
:rules="[{ required: true, message: '请输入项目名称', trigger: 'blur' }]"
2: 实现滚动到目标元素,一般第一个元素,校验不通过会添加class为el-form-item_error的类
this.$rers.formRef.validate(valid => {
if (valid) {
// 校验通过,调用提交接口
} else {
// 校验未通过
this.$nextTick(() => {
if (
document.querySelectorAll('.el-form-item__error') &&
document.querySelectorAll('.el-form-item__error').length > 0
) {
const target = document.querySelectorAll('.el-form-item__error')[0];
target.scrollIntoView({ block: 'center', behavior: 'smooth' });
}
});
}
})