我正在使用Formik和yup来验证它。我对两个字段
的验证有以下要求startedended
started必须是有效日期。started必须是过去的日期。ended可以为 null,表示不需要。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")
})}
Run Code Online (Sandbox Code Playgroud)
1、2、3 有效,但第四次验证无效。
我也尝试将其更改为is: started => started !==null,这是完全错误的,因为我console.log(started)和那打印了我Invalid date。
我什至尝试过is: true也没有成功。
验证此要求的正确方法是什么?
LOP*_*HER 13
从这里得到这个解决方案/sf/answers/4219425731/。
但基本上这将检查开始时间是否存在,然后检查结束时间是否晚于:
ended: yup.date().default(null)
.when("started",
(started, yup) => started && yup.min(started, "End time cannot be before start time"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18501 次 |
| 最近记录: |