1

如何实现条件,例如 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()
  })

我想检查 value2 是否始终为 > value。如何在 when 条件下访问 value2 的值?

4

4 回答 4

5

我不确定这是正确的方法,但我正在使用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;
})
于 2018-09-20T14:04:37.427 回答
2

如果您想比较两个字段之间的多个条件,请尝试此操作

import * as Yup from 'yup';
value: Yup.number().required(''),
value2: Yup.number().required()
   .moreThan(
    Yup.ref('value'),
    'Should be more than value2'
    )
于 2020-07-15T11:35:08.257 回答
0

我不确定,但试试is: (val) => Yup.number().moreThan(val)

于 2018-08-22T16:56:16.123 回答
-1

我正在为电子邮件和手机验证相同的字段,因此用户可以验证两者是否是相同的字段。

  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)
      }),
于 2021-07-27T07:34:03.800 回答