返回
在Element UI中巧妙解决表单验证疑难杂症
前端
2023-11-03 02:58:44
一、v-for列表下的表单验证触发秘诀
当您在v-for列表中使用表单验证时,可能会遇到验证无法准确触发的难题。这是因为Element UI的表单验证默认只对当前激活的表单元素进行验证。为了解决这一问题,您需要在v-for列表中使用一个特殊的指令:v-validate-trigger
。
<template>
<div>
<el-form :model="form" :rules="rules" ref="form">
<el-form-item v-for="(item, index) in formList" :label="item.label" :prop="item.prop">
<el-input v-model="formList[index].value" v-validate-trigger="change"></el-input>
</el-form-item>
<el-button type="primary" @click="submitForm">提交</el-button>
</el-form>
</div>
</template>
<script>
export default {
data() {
return {
form: {
name: '',
age: ''
},
rules: {
name: [
{ required: true, message: '请输入姓名', trigger: 'change' }
],
age: [
{ required: true, message: '请输入年龄', trigger: 'change' }
]
},
formList: [
{ label: '姓名', prop: 'name' },
{ label: '年龄', prop: 'age' }
]
}
},
methods: {
submitForm() {
this.$refs.form.validate((valid) => {
if (valid) {
// 表单验证通过,提交表单
} else {
// 表单验证失败,提示错误信息
}
})
}
}
}
</script>
在上面的代码中,我们在v-for列表中的每个el-form-item上都添加了v-validate-trigger="change"
指令。这意味着当表单元素的值发生改变时,表单验证将立即触发。这样,您就可以确保在v-for列表下的表单验证能够准确触发。
二、list增删操作时视图正确更新的秘诀
在对list进行增删操作时,您可能会发现视图没有正确更新。这是因为Element UI的表单验证默认只对当前激活的表单元素进行验证。为了解决这一问题,您需要在list增删操作后手动调用$forceUpdate()
方法来强制视图更新。
<template>
<div>
<el-form :model="form" :rules="rules" ref="form">
<el-form-item v-for="(item, index) in formList" :key="index" :label="item.label" :prop="item.prop">
<el-input v-model="formList[index].value"></el-input>
</el-form-item>
<el-button type="primary" @click="addForm">添加</el-button>
<el-button type="primary" @click="deleteForm">删除</el-button>
</el-form>
</div>
</template>
<script>
export default {
data() {
return {
form: {
name: '',
age: ''
},
rules: {
name: [
{ required: true, message: '请输入姓名' }
],
age: [
{ required: true, message: '请输入年龄' }
]
},
formList: [
{ label: '姓名', prop: 'name' },
{ label: '年龄', prop: 'age' }
]
}
},
methods: {
addForm() {
this.formList.push({
label: '姓名',
prop: 'name'
})
this.$forceUpdate()
},
deleteForm() {
this.formList.pop()
this.$forceUpdate()
}
}
}
</script>
在上面的代码中,我们在添加和删除表单元素后都调用了$forceUpdate()
方法。这样,就可以确保视图能够正确更新,并且表单验证能够正常工作。
通过以上两个技巧,您就可以轻松解决Element UI表单验证中的常见疑难杂症,让表单验证更加顺畅和可靠。