在一个字段上进行验证会阻止其他字段

时间:2019-09-06 22:35:15

标签: yup

一个字段上的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'))
});  

0 个答案:

没有答案