Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
пользователь может ввести в строку набор цифр и букв, например, '5s68d.4r55e.6t5', а на сервер я должен отправить корректное для сохранения сумму в рублях — '568,455' (рублей)
По этой причине старший товарищ дал указание написать функцию на событие keypress
<input type="number">
где в данном примере заканчивается сумма в рублях и начинаются копейки?
По этой причине старший товарищ дал указание написать функцию на событие keypress.
…
Код взят со steckoverflow, но мой код мало чем отличался от примера выше.
…
Всё выглядело красиво — пользователь не видит вводимых чисел и курсор не перебрасывает в конец строки, но, как оказалось, радовались мы рано. Если смотреть на keycode клавиш на разных операционных системах (mac, linux, win), то они имеют некоторые различия, а если к этому прибавить то, что не у всех маков есть numPud и, следовательно, числа вводятся с зажатым шифтом и также цифры могут вводится с виртуальной клавиатуры. В итоге получается код во много раз больше, чем последний пример.
Получил я достаточно стандартное задание: фильтровать вводимые юзером символы в input
Задание то стандартное, но подошли вы к нему не с той стороны. Если просто потренироваться — возможно. А для реальных приложений так делать не стоит.
Какой смысл распознавать пользовательский бред? Особенно когда он не однозначен. Проще сообщить, что введенное выражение не соответствует. Дальше то все равно последует серверная валидация.
А если и нужны ограничения на этапе ввода, то проще type="number" или атрибут pattern.
Фильтр символов вводимых в input