elementui form表单el-form-item使用v-show控制显示隐藏,在提交时 rules 验证错误的问题
在Element UI中使用v-show
来控制el-form-item
的显示隐藏可能会导致一些问题,因为el-form-item
在v-show
为false
时不会被渲染到DOM中,这样会使得表单验证无法正确工作,因为验证是基于可见的表单元素进行的。
为了解决这个问题,可以使用v-if
代替v-show
。v-if
会确保在表单项不显示的情况下从DOM中移除该元素。这样,即使元素不可见,Element UI的表单验证依然可以正确工作。
下面是使用v-if
替换v-show
的示例代码:
<template>
<el-form :model="form" :rules="rules" ref="form">
<el-form-item label="用户名" prop="username" v-if="showUsername">
<el-input v-model="form.username"></el-input>
</el-form-item>
<!-- 其他表单项 -->
</el-form>
</template>
<script>
export default {
data() {
return {
form: {
username: '',
// 其他数据
},
rules: {
username: [
{ required: true, message: '请输入用户名', trigger: 'blur' }
],
// 其他规则
},
showUsername: true // 控制用户名项的显示隐藏
};
},
methods: {
submitForm() {
this.$refs.form.validate((valid) => {
if (valid) {
// 提交表单逻辑
} else {
// 表单验证失败逻辑
}
});
}
}
};
</script>
在这个例子中,el-form-item
使用v-if
来控制显示隐藏,这样可以确保表单验证时能正确考虑到这些元素。当你需要隐藏表单项时,只需更改showUsername
的值即可。
评论已关闭