Правильный способ «предварительной проверки» ввода html в соответствии с конкретным языком(включая формик)

#javascript #html #validation #formik

Вопрос:

Мне нужно предварительно проверить мои входные данные в соответствии с языковым стандартом и определенным «типом формата». Например: В некоторых случаях можно будет вводить только значения int, в других случаях это может быть значение с плавающей точкой, но с определенными десятичными знаками и так далее.

Что у меня было на данный момент:

  1. тип = «текст», пользовательские проверки, проблемы с формиком. Тип ввода= «текст» позволяет мне выполнять любые проверки, которые я хочу, в «onKeyPress» и других событиях. Но проблема в том, что formik перерисовывает ввод после каждого изменения, и в случае ввода десятичного разделителя он будет удален(просто потому, что после значения поля formik 999. (или даже 999.0) становится 999). Как я вижу сейчас, я могу добавить много уродливого кода в пользовательский формик, но я чувствую, что есть лучший способ..
  2. тип= «число», регион проблемы. Это позволяет браузеру делать большую часть работы, используя тип= «число»: это работает намного лучше, я все еще могу использовать события, которые я хочу, но проблема остается даже через мой язык(ан-Нас), это не позволяет мне вводить «.» в качестве десятичного разделителя, но позволяет мне использовать «,» только.

Существует также атрибут шаблона, но его нельзя использовать с «числовыми» входами, поэтому у нас те же проблемы, что и в первом случае.

Что касается отображения — динамическое переключение на «текст» и отображение форматированного текста с помощью «Intl.NumberFormat» работает довольно хорошо.

Мне действительно хочется «изобрести велосипед заново», но он уже должен быть изобретен…

Комментарии:

1. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.