【发布时间】:2020-01-18 23:32:10
【问题描述】:
我正在使用 Formik 和 yup 进行验证。
我对started 和ended 两个字段的验证有以下要求
-
started必须是有效日期。 -
started必须是过去的日期。 -
ended可以为空,表示不需要。 -
ended不能为空,并且必须是有效日期,如果started具有有效的日期值。
这是我的验证模式:
validationSchema={yup.object().shape({
started: yup.date().max(new Date(), "Future date not allowed").typeError("Invalid Started date"),
ended: yup.date().default(null).when("started", {
is: yup.date().isValid(),
then: yup.date().min(yup.ref("started"), "Ended date must be later than Start date"),
otherwise: yup.date().nullable()
}).typeError("Invalid Ended date")
})}
1,2,3 有效,但第 4 次验证无效。
我还尝试将其更改为is: started => started !==null,这是完全错误的,因为我console.log(started) 并打印了我Invalid date。
我什至尝试过is: true,但也没有用。
验证此要求的正确方法是什么?
【问题讨论】: