Эту функцию можно отнести к обработчикам текста после его ввода. Если обрабатывать текст одновременно с вводом, то там геморроя больше получается, т.к. приходится обрабатывать текст и последнюю нажатую клавишу (если BackSpace - то изменять ничего не надо - просто пользователь исправляет, а если цыферы, то смотреть, что вводит и исправлять, потом сравнивать месяц и день - если нужно исправлять день, а потом выяснять високосность года и опять исправлять день, если год НЕ високосный).