29

如何进行密码验证但同时将错误传递给不同的变量?

IE

password: Yup.string().required("Please provide a valid password"),
passwordMin: Yup.string().oneOf([Yup.ref('password'), null]).min(8, 'Error'),
passwordLC: Yup.string().oneOf([Yup.ref('password'), null]).matches(/[a-z]/, "Error" )
passwordUC: Yup.string().oneOf([Yup.ref('password'), null]).matches(/[A-Z]/, "Error" )

我无法获取密码变量的绑定以与密码对象绑定

4

3 回答 3

47

只是为了详细说明 efleurine 的答案。
您不需要将每个验证存储在同一字段中 - 您可以将它们链接起来以获得完整的验证。

password: Yup.string()
  .required('No password provided.') 
  .min(8, 'Password is too short - should be 8 chars minimum.')
  .matches(/[a-zA-Z]/, 'Password can only contain Latin letters.')

请注意您仍然可以如何为每个失败指定单独的消息。
此外,要使绑定正常工作,请确保您要绑定的表单输入具有适当的name属性 - 在本例中为password.

于 2018-12-02T01:41:03.250 回答
37

希望这可以帮助:

import * as Yup from 'yup';

validationSchema: Yup.object({
  password: Yup.string().required('Password is required'),
  passwordConfirmation: Yup.string()
     .oneOf([Yup.ref('password'), null], 'Passwords must match')
});
于 2020-07-31T07:22:12.320 回答
0

我知道您可以将同一元素的验证链接在一起。如果您正在尝试进行交叉验证,那么本文将对您有所帮助。它是关于 formik 的反应,但我敢打赌它会给你一个如何解决你的案子的想法。

https://itnext.io/simple-react-form-validation-with-formik-yup-and-or-spected-206ebe9e7dcc

于 2018-10-18T16:38:08.077 回答