Есть задача: в input вводится дата (DD.MM.YYYY), сделать, чтобы в поле можно было вводить только цифры и точку. Если цифры я могу еще запретить вводить с помощью event.which 48-57, то с точкой обстоят дела хуже. Как мне ее найти? Ведь у Mac OS точка это клавиша "ю" (англ. раскладка) и "shift + 7" (русская), у винды это клавиша после "ю" (русская) и "ю" (англ). Может еще кто как развлекаться со своей клавой будет, как мне узнать нажата точка или что? Возможно это сделать через e.which или нужно каждый раз просить value и глядеть последний символ?
Сейчас я вообще реализовал с помощью регулярки, которая проверяет все выражение по формату DD.MM.YYYY, но это же затратно, лучше сделать еще один уровень защиты от негодяев? Или я не прав? Заранее спасибо за дельный совет!:)
Так может написать свою маску для ввода текста? От Ctrl+V ваши попытки все равно не спасут.
- нужно определить шаблон с заданными символами
- функции-проверки для каждого символа-маски ('*' :=> true, '#' :n=>Number.isInteger(+n) )
- при любом изменении поля проверять символы циклом по шаблону