Принцип «Дай нажать»: выбор даты
Возможный вариант реализации выбора даты рождения в интерфейсе — три последовательных выпадайки день, месяц, год.
Как вы знаете, некоторых дней не существует в природе, например не бывает 31 июня. А 29 февраля в некоторые годы бывает, а в некоторые — нет.
Чтобы не дать пользователю ввести несуществующую дату, некоторые разработчики убирают из поля дня несуществующие дни. То есть если выбран месяц июнь, то дня «31» просто не будет в выпадайке. Но что, если у меня день рождения 31 августа? Я хочу ткнуть в 31, а потом выбрать август. Дай нажать!
Бывает обратная проблема: разработчики дают выбрать несуществующую дату, но выводят сообщение об ошибке, когда она выбрана. Это тоже отстой: хорошая форма не засыпает пользователя сообщениями об ошибках, а деликатно помогает их не допустить.
Лучше так: при вводе дня, несовместимого с текущим выбранным месяцем, развыбирать месяц. Если я выбрал 29 февраля, а выбранном году такого нет, развыбирать год.