Задать вопрос
@TreeFall1

Почему не работает pattern на input?

У меня есть input, на который я повесил pattern="\d*". Вроде как это должно было разрешить вводить только цифры, но почему то не сработало. Почему? Может на реакт как то по другому надо это делать?
  • Вопрос задан
  • 771 просмотр
Подписаться 1 Простой 1 комментарий
Решение пользователя Elaryks К ответам на вопрос (2)
Elaryks
@Elaryks
Проверка с помощью атрибута pattern срабатывает непосредственно перед отправкой формы. Кроме того, это не запретит ввод символов, отличных от цифр, а лишь покажет уведомление в случае несоответствия. Вашу же задачу можно решить несколькими способами.
Первый вариант: <input type="number" />. Из особенностей: он допускает ввод некоторых символов, отличающихся от цифр (например, "+" и "e").
Второй вариант: перехватывать событие onChange у поля ввода:
const [value, setValue] = useState('')

const handleInputChange = (e) => {
  setValue(e.target.value.replace(/\D/g, ''))
}

<input value={value} onChange={handleInputChange} />
Ответ написан
Комментировать