Yup 中的条件验证
Conditionally Validation in Yup
如何实现条件,例如 1 个字段的值应始终大于另一个字段的值。
这是我的架构
value: Yup.number().required(''),
value2: Yup.number().when('value',{
is: (val) => something here
then: Yup.number().required('Required').positive('value should be positive'),
otherwise: Yup.number()
})
我想检查值 2 是否始终 > 值。
如何在when条件下访问value2的值?
我不确定,但试试看 is: (val) => Yup.number().moreThan(val)
我不确定这样做是否正确,但我正在使用 test。
像这样:
yourField: Yup.string().test('should-be-greather-than-yourField2', 'Should be greather than yourfield 2', function(value) {
const otherFieldValue = this.parent.yourField2
if (!otherFieldValue) {
return true;
}
return value > otherFieldValue;
})
如果你想在两个字段之间比较多于条件,试试这个
import * as Yup from 'yup';
value: Yup.number().required(''),
value2: Yup.number().required()
.moreThan(
Yup.ref('value'),
'Should be more than value2'
)
我正在为电子邮件和移动设备验证相同的字段,所以用户可以验证这两个字段是否相同。
username: yup
.string().when({
is : value =>isNaN(value),
then: yup.string().required('email/mobileno is required') .matches( Regex.EMAIL_REGX,
'Invalid email',
),
otherwise: yup.string()
.matches(Regex.PHONENO_REGX, StringUtils.phoneNo)
}),
如何实现条件,例如 1 个字段的值应始终大于另一个字段的值。
这是我的架构
value: Yup.number().required(''),
value2: Yup.number().when('value',{
is: (val) => something here
then: Yup.number().required('Required').positive('value should be positive'),
otherwise: Yup.number()
})
我想检查值 2 是否始终 > 值。 如何在when条件下访问value2的值?
我不确定,但试试看 is: (val) => Yup.number().moreThan(val)
我不确定这样做是否正确,但我正在使用 test。
像这样:
yourField: Yup.string().test('should-be-greather-than-yourField2', 'Should be greather than yourfield 2', function(value) {
const otherFieldValue = this.parent.yourField2
if (!otherFieldValue) {
return true;
}
return value > otherFieldValue;
})
如果你想在两个字段之间比较多于条件,试试这个
import * as Yup from 'yup';
value: Yup.number().required(''),
value2: Yup.number().required()
.moreThan(
Yup.ref('value'),
'Should be more than value2'
)
我正在为电子邮件和移动设备验证相同的字段,所以用户可以验证这两个字段是否相同。
username: yup
.string().when({
is : value =>isNaN(value),
then: yup.string().required('email/mobileno is required') .matches( Regex.EMAIL_REGX,
'Invalid email',
),
otherwise: yup.string()
.matches(Regex.PHONENO_REGX, StringUtils.phoneNo)
}),