Можно ли реализовать 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) (менее важно) содержит стрелки, которые мне не нужны.
И проблема здесь состоит в том, чтобы запретить пользователю вводить что-то за пределами ограниченных значений, вместо того, чтобы позволять вводить что-либо и проверять это впоследствии