一个字段上的Yup验证错误会阻止其他通过验证的字段。
因此,只要日期无效,我都会使它抛出错误。并假设我没有输入卡号,它显示错误:“需要卡号”。即使输入了正确的号码,错误也不会仅仅因为到期日期仍然无效而消失。
const segmentSchema = yup.object().shape({
cardNumber: yup
.string()
.transform(originalValue => (originalValue.replace(/ /g, '')))
.min(15, 'Invalid length')
.max(19, 'Max length reached'))
.required('card number required'),
expiration: yup
.string()
.transform(originalValue => {
const expiryDate = originalValue.replace(/ \/ /g, '');
if (expiryDate.length === 4) {
const { path, createError } = this;
const month = expiryDate.slice(0, 2).toString();
const year = expiryDate.slice(2, 4).toString();
if (!Payment.fns.validateCardExpiry(month, year)) {
throw createError({
path: `${path}`,
message: 'Invalid date'
});
}
}
return expiryDate;
})
.length(4, 'Invalid length'))
.required(t('expiry date needed'))
});