vue3 +element-ui 实现时间选择器并校验开始时间小于结束时间
在Vue 3中使用Element UI实现时间选择器并进行验证,确保开始时间小于结束时间,你可以使用el-form
和el-form-item
来构建表单,并利用Element UI提供的el-date-picker
组件来选择时间。同时,使用el-form
的rules
属性来定义验证规则。
以下是一个简单的例子:
<template>
<el-form :model="form" :rules="rules" ref="formRef">
<el-form-item label="开始时间" prop="startTime">
<el-date-picker
v-model="form.startTime"
type="datetime"
placeholder="选择开始时间"
></el-date-picker>
</el-form-item>
<el-form-item label="结束时间" prop="endTime">
<el-date-picker
v-model="form.endTime"
type="datetime"
placeholder="选择结束时间"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm">提交</el-button>
</el-form-item>
</el-form>
</template>
<script setup>
import { reactive, ref } from 'vue';
import { ElMessage } from 'element-plus';
const form = reactive({
startTime: '',
endTime: '',
});
const formRef = ref(null);
const validateTime = (rule, value, callback) => {
if (form.endTime && value && form.endTime < value) {
callback(new Error('开始时间需要小于或等于结束时间'));
} else {
callback();
}
};
const rules = {
startTime: [
{ required: true, message: '请选择开始时间', trigger: 'change' },
{ validator: validateTime, trigger: 'change' },
],
endTime: [
{ required: true, message: '请选择结束时间', trigger: 'change' },
{ validator: (rule, value, callback) => {
if (form.startTime && value && form.startTime >= value) {
callback(new Error('结束时间需要大于开始时间'));
} else {
callback();
}
}, trigger: 'change' },
],
};
const submitForm = () => {
formRef.value.validate((valid) => {
if (valid) {
ElMessage.success('提交成功');
} else {
ElMessage.error('表单验证失败');
}
});
};
</script>
在这个例子中,我们定义了一个带有开始时间和结束时间的表单。rules
对象定义了两个验证函数,validateTime
用于确保开始时间小于或等于结束时间。提交表单时,调用formRef.value.validate
来触发表单验证。如果验证通过,则可以执行提交操作;如果不通过,则显示错误信息。
评论已关闭