Можно ли реализовать input
который позволяет вводить только цифры внутри без ручной обработки event.target.value
?
В React можно определить свойство value
после чего изменение ввода будет в основном связано со значением (его невозможно изменить без изменения value
). Смотрите пример. И это работает просто отлично без каких-либо усилий.
В Angular 2 можно определить [value]
, но он просто установит значение изначально, а затем input
не будет предотвращен от изменений.
Я играл с ngModel
и [value]/(input)
, см. Пример.
Но в обеих реализациях есть существенная проблема:
- при вводе 10 (значение модели 10; значение ввода 10) - правильно
- при последующем наборе 10d (значение модели 10 - не изменено, все нецифровые символы удалены; входное значение 10d) - неверно, поскольку значение модели такое же, как и раньше
- при вводе 10d3 - (значение модели 103; значение ввода 103) - правильно
Как сделать этот простой (с первого взгляда) компонент без ручной обработки event.target.value
?...
ОБНОВЛЕНИЕ Я не ищу нативный HTML5 элемент input[number]
здесь. Ввод чисел здесь только для примера - может быть гораздо больше задач, когда мне нужно ограничить ввод текста.
Более того, input[number]
равен 1) не ограничивает меня от ввода 10ddd
и 2) (менее важно) содержит стрелки, которые мне не нужны.
И проблема здесь состоит в том, чтобы запретить пользователю вводить что-то за пределами ограниченных значений, вместо того, чтобы позволять вводить что-либо и проверять это впоследствии