VUE+ElementUI的表单验证二选一必填项,并且满足条件后清除表单验证提示
在Vue中使用Element UI时,可以利用表单的prop
属性和表单验证规则来实现二选一必填项的验证。你可以定义一个计算属性来判断是否有必填字段被填写,并在填写或清除字段时更新验证状态。
以下是一个简单的例子:
<template>
<el-form :model="form" :rules="rules" ref="form" label-width="100px">
<el-form-item label="选项A" prop="optionA">
<el-input v-model="form.optionA"></el-input>
</el-form-item>
<el-form-item label="选项B" prop="optionB">
<el-input v-model="form.optionB"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm">提交</el-button>
</el-form-item>
</el-form>
</template>
<script>
export default {
data() {
return {
form: {
optionA: '',
optionB: ''
},
rules: {
optionA: [
{ required: true, message: '请输入选项A', trigger: 'blur' }
],
optionB: [
{ required: true, message: '请输入选项B', trigger: 'blur' }
]
}
};
},
computed: {
// 计算属性,用于确定至少有一个字段被填写
atLeastOneFilled() {
return this.form.optionA !== '' || this.form.optionB !== '';
}
},
watch: {
// 监听计算属性的变化,如果两个字段都为空,则清除验证提示
atLeastOneFilled(value) {
if (!value) {
this.$refs.form.clearValidate();
}
}
},
methods: {
submitForm() {
this.$refs.form.validate(valid => {
if (valid) {
alert('提交成功!');
} else {
alert('请至少填写一个必填项!');
return false;
}
});
}
}
};
</script>
在这个例子中,我们定义了两个输入框用于填写选项A和选项B。我们使用计算属性atLeastOneFilled
来判断是否至少有一个字段被填写。如果两个字段都为空,我们在watch
中监听atLeastOneFilled
的变化,并在变为false
时调用this.$refs.form.clearValidate()
来清除表单验证提示。在提交表单的submitForm
方法中,我们首先调用this.$refs.form.validate
来进行验证,如果验证失败且两个字段都为空,则返回错误信息并不提交表单。
评论已关闭