我有两个日期字段,我想验证开始日期应该早于结束日期。我的逻辑正确地验证了这一点,但是唯一的问题是我可以为开始日期和结束日期选择相同的日期和时间,并且它不会显示任何错误。如何修改以下内容以检查相同的开始日期和结束日期?
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} />发布于 2022-11-14 23:39:50
按如下所示更新架构。在当地的回购测试,工作良好。您可以根据需要更新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;
}),
}),https://stackoverflow.com/questions/74429202
复制相似问题