Подтверждение пароля и подтверждения пароля при вводе с помощью Joi - PullRequest
0 голосов
/ 04 августа 2020

Я использую joi-browser для проверки формы в React . Проблема, с которой я столкнулся, - это проверка password и confirmPassword на входе.

Схема, которую я использую, такая же, как и в другом вопросе о переполнении стека .

password: Joi.string().min(3).max(15).required(),
confirmPassword: Joi.any().valid(Joi.ref('password')).required().options({ language: { any: { allowOnly: 'must match password' } } })

Как только я начинаю набирать confirmPassword, появляется моя ошибка, даже если она такая же, как password, а при отправке она исчезает и отправляет форму. но если confirmPassword не то же самое, он не может отправить, что все в порядке.

Я хочу, он должен проверяться на событии onChange, и если confirmPassword поле совпадает с полем password, ошибка должна

Код logi c есть, все поля определены в formData в состоянии, и все ошибки будут сохраняться в errors объекте с таким же именем в state.errors. Если возникает ошибка, он создает запись в объекте ошибок, иначе удаляет ее из объекта ошибок.

Состояние моей формы:

state = {
    formData: {
        password: '',
        confirmPassword: ''
    },
    errors: {}
}

Метод onChange:

onChangeField = ({ currentTarget: input }) => {
    const errors = { ...this.state.errors };
    const errorMsg = this.validateField(input);
    if (errorMsg) errors[input.name] = errorMsg;
    else delete errors[input.name];

    const formData = { ...this.state.formData };
    formData[input.name] = input.value;
    this.setState({ formData, errors });
}
validateField = ({ name, value }) => {
    const obj = { [name]: value };
    const schema = { [name]: this.schema[name] };
    const { error } = Joi.validate(obj, schema);
    return error ? error.details[0].message : null;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...