То, что я хочу, является для пользователя только для ввода допустимой даты, однако у меня возникли проблемы с поиском хорошего пути для этого.Директива AngularJS для предотвращения ввода недопустимой даты
Формат даты должен быть «MM/DD/YYYY», поэтому у меня есть маска на входе «99/99/9999». Хотя это заставляет пользователя вводить только цифры и автоматически форматирует его так, как мне нужно, проблема заключается в том, что это позволяет пользователю вводить что-то вроде «53/49/6540», что является недопустимой датой.
Попытка 1
Связывание функции с/KeyDown нажатие клавиши события.
- У меня есть регулярное выражение, которое может проверять дату по мере их ввода (так что это позволяет «12», но не «13» за месяц, например).
- Все выглядит хорошо .. но ... начинает показывать некоторые странные результаты при редактировании
- Допустим вход «10/21/1999»
- Они хотят изменить месяц до «12».
- Так они положили их курсор после «0» и нажмите Backspace,
- Значение теперь «12/11/999» и недействительным, предотвращая вход
- Или они просто выделите «0» и случайно попал " 3" вместо "2", она будет проходить через, став "13/21/1999", а затем недействительным, предотвращение дальнейшего ввода
Попытка 2
Binding функцию к ключ/измененное событие.
- Я получаю старое значение, новое значение и подтвердите его, и вернуться к старому, если он недействителен
- Это создает странный опыт пользователя, как они смотрят, что они ввели в удаляются и установить обратно, который мне не нравится вообще
- не позволяет пользователю забой, если недействительным, так как он возвращается его
- Тем не менее позволяет недопустимые данные через если наберется достаточно быстро
Помощь
Есть ли какой-либо способ подтвердить дату, когда они печатают ее (а не после факта), не имея странных вещей?
Plunkr показывающие вопросы:http://embed.plnkr.co/0qbiiiRnIo9SuJ5xNe30/preview
Вместо этого используйте сборщик дат. Лучше всего проверять даты. Также рассмотрите сценарий, например, 30 февраля или 31 апреля и т. Д. Лучше всего использовать выбор даты. Запретить пользователю вводить дату вручную. В фокусе, покажите выбор даты – mohamedrias
Прошу прощения, я не упоминал, что я также использую сборщик дат (просто не помещал его в plunkr), но я не хочу, чтобы они не могли напечатать в тоже время, в котором возникает моя проблема. – Trehyu