是否可以使用Yup validaion为一个验证对象设置两个不同的最大条件?所以目前我有这个代码:
yup.array().of(yup.object().shape({
dateToCheck: yup
.date()
.min(minDatetoCheck, 'Cant be below this date')
.max(maxDatetoCheck, 'Cant be above this date'))
.required()
})
)
.when('initialValue', {
is: true,
then: yup.array().min(1)
})
所以我想添加额外的检查,这样任何输入年份超过9999的日期(就像年份有5个数字或更多(都应该被视为"无效日期格式"。我试过这个:
.date()
.min(minDatetoCheck, 'Cant be below this date')
.max(maxDatetoCheck, 'Cant be above this date')
.max(9999, 'Invalid date format')
.required()
然而,它不起作用。也许有没有一种方法可以在.date()
方法中设置特定的自定义日期表单,只坚持4个数字长年份?因为默认的年份格式允许5个数字的年份,这不是我需要的。
您可以在yup:中使用测试方法
.test(
'format',
'our Date',
date => date.getFullYear() <= 9999
)
问题的关键字是test
以下是您案例的使用示例。我最后一个离开了。因为我不理解无效日期案例(9999
(的逻辑。使用test
方法,您可以对验证字段进行更具体的操作。你也可以把它们串起来。记住它必须是返回布尔值。
代码:
yup.array().of(yup.object().shape({
dateToCheck: yup.date()
.test(
'cant-below-this-date',
'Cant be below this date',
(date) => {
return minDatetoCheck < date;
})
.test('cant-above-this-date',
'Cant be above this date',
(date) => {
return maxDatetoCheck > date;
})
.test('invalid-date',
'Invalid date format',
(date) => {
// 9999 case goes here
// You must return true if expression meet requirements otherwise you have to return false.
// For dispatch validation error.
})
.required()
}))
.when('initialValue', {
is: true,
then: yup.array().min(1)
})