So I wanted to validate few fields in array based on other boolean
field. Here below is a schema of my form.
{ "bankAccounts": [{ "accountType": "savings", "accountNumber": "11111111111" }], "bankingEnabled": true
}
Now I want that array fields to validate only if bankingEnabled
is true. Here below is a Yup
schema that will solve this problem:
{ bankAccounts: yup.array() .when('bankingEnabled', { is: true, then: yup.array().of( yup.object().shape({ accountType: yup.string().required('Please select your Account Type'), accountNumber: yup .string() .required('You must enter a Account Number') .matches(/^[0-9]+$/, 'Must be only digits') .min(5, 'Must be atleast 5 digits') .max(17, 'Must not be more than 17 digits'), }) ) })
}
Se here’s I’m checking conditionally on bankindEnabled
field using when
method that if value of this field is true
then other validations will be executed.
Hope this helps.
Source: https://www.codementor.io/shyammakwana/yup-validate-array-fields-conditionally-24vdins6cv