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 должно быть больше нуля. Что не так делаю?
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
Legendarniy
@Legendarniy Автор вопроса
Решил проблему. При автозаполнении хром например ставит вовсе не пробелы, а символ с нулевой шириной. Сделал вот так .replace(/[\u2060]/g, '')
и всё стало работать как надо. Трим и замену пробельных символов естественно убрал.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
20 авг. 2018, в 21:21
30000 руб./за проект
20 авг. 2018, в 20:46
5000 руб./за проект
20 авг. 2018, в 20:38
700 руб./в час