web-dev-qa-db-fra.com

Validation de Yup basée sur un autre champ non requis

Je construis un formulaire en React à l'aide de Formik et réagissant-bootstrap et j'utilise Yup pour valider le formulaire.

J'ai 2 champs, disons sur le terrain et le champ. Fielda n'est pas nécessaire, mais le champ est nécessaire si le champ n'est pas vide.

Fielda est une zone de texte tandis que Fieldb est multiple Select. Ma règle de validation pour le terrain doit être:

FieldA !=='' ? FieldB is required : do nothing
7
Adrian

Essaye ça:

const schema = Yup.object().shape({
       FieldA: Yup.string(),
       FieldB: Yup.string()
        .when('FieldA', {
          is: (FieldA) => FieldA.length > 0,
          then: Yup.string()
            .required('Field is required')            
        })
    });
4
v.k.

Utilisez l'option validate dans Formkit comme mentionné ici

const validate = values =>
  if (values.a > values.b){
    //return error message for assumed filed
    return {
      a: 'a is greater than b',
    };
  }

dans Formkit:

<Formik
    initialValues={{
    a: 2,
    b: 1,
    }}
    validate={validate}
1
majran