Legendarniy
@Legendarniy

Почему после автозаполнения input регулярка выдает неверное значение?

Что-то никак не могу понять, что не так.

Есть поле input куда вводится сумма. После того как ввели значение сумма у меня преобразовывается вот так
const newVal = value.Amount.toString().replace(/\s/, '').replace(/,/g, '.');

В дальнейшем как в работу вступает валидатор, который проверяет по регулярке, условие, регулярка вот такая:
/^(\d+\.|\d*[1-9])\d*$/.test(newVal)
При вводе "руками" скажем числа 111,00 значение преобразовывается в 111.00 и все ок, это больше нуля, регулярка отдает true. Но если ввести значение в поле через автокомплит, то тогда тест регулярки отдаст false и тогда валидатор сработает и скажет, что число 111,00 должно быть больше нуля. Что не так делаю?
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
Legendarniy
@Legendarniy Автор вопроса
Решил проблему. При автозаполнении хром например ставит вовсе не пробелы, а символ с нулевой шириной. Сделал вот так .replace(/[\u2060]/g, '')
и всё стало работать как надо. Трим и замену пробельных символов естественно убрал.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 14:12
30000 руб./за проект
19 апр. 2024, в 14:10
500 руб./за проект