Да, проверка номера телефона не работает - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть следующая форма и formik:

const formik = useFormik( {
    initialValues: {
      number: '',
    },
    onSubmit: values => {
      action( values.number );
    },
    validationSchema: numberSchema,
  } );

  return (
    <form onSubmit={formik.handleSubmit}>
      <SomeForm>
        <InputLabel htmlFor="some-number">
          <FormattedMessage {...messages.number} />
        </InputLabel>
        <Input
          value={formik.values.number}
          onChange={formik.handleChange}
          id="number"
          type="tel"
          placeholder="+1 (000) 000 0000"
        />
.
.
.

и схема выглядит следующим образом:

const numberSchema = Yup.object( {
    number:
        Yup.number().typeError( "That doesn't look like a phone number" )
            .required( 'Phone number is required!' )
            .positive()
            .min( 7 )
} );

Проблема заключается в проверке количества введенных цифр, когда я ввожу только одну цифру git Я получаю сообщение об ошибке, что число должно быть больше или равно 7, но после второго ввода это сообщение об ошибке исчезает. Почему проверка прекращается после ввода более 1 ди git?

1 Ответ

1 голос
/ 11 февраля 2020

Вы проверяете его как число, а не как строку, поэтому .min в этом случае означает, что числовое значение должно быть минимум 7. Это не длина. Вы должны проверить его как строку и использовать шаблон регулярного выражения. Пример:

phoneSchema = Yup.string().matches(new RegExp('[0-9]{7}'))

И тогда вы также можете сделать его более продвинутым.

...