Мне кажется, сценарий не проработан. Какая задача перед инпутом стоит?
Сейчас ты хочешь игнорировать клавиатуру, если в поле пытаются ввести невалидное значение. А что если значение становится невалидным в процессе ввода?
Пользователь видит `0.05`, хочет ввести `0.02` и для этого стирает последнюю цифру и в инпуте появляется невалидное значение `0.0`. Твоя система запретит стирать двоечку, потому что значение `0.0` выходит за рамки валидатора.
Предлагаю для начала подумать над сценарием работы с твоим инпутом, а потом пытаться его реализовать.