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
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')
})
});
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}