是日期验证



我有2个日期字段,我想验证开始日期应该早于结束日期。我的逻辑正确地验证了这一点,但唯一的问题是我可以为开始和结束日期选择相同的日期和时间,它不会显示任何错误。我如何修改以下内容以检查相等的开始日期和结束日期?

const licenseSchema = Yup.object().shape<ObjectSchemaDefinition<FormData>>({
licenseStart: Yup.date(),
licenseEnd: Yup.date().when('licenseStart', {
is: (start) => start != null,
then: (end) =>
end.min(
Yup.ref('licenseStart'),
'License end date cannot be before start date',
),
}),
});

我的领域

<Field name="licenseStart" label="From" as={DateTimeTextField} />
<Field name="licenseEnd" label="To" as={DateTimeTextField} />

按如下方式更新模式。在本地回购测试,工作良好。您可以根据需要更新if块内的条件。

const licenseSchema = Yup.object().shape<ObjectSchemaDefinition<FormData>>({
licenseStart: Yup.date().typeError('required'),
licenseEnd: Yup.date().typeError('required')
.test('checkEndDate', '', function (value) {
const { path, parent, createError } = this;
if ((parent.licenseStart).getTime() >= value.getTime()) {
return createError({
path,
message: 'License end date cannot be before start date',
});
}
return true;
}),
}),

相关内容

  • 没有找到相关文章

最新更新