Таки запилил решение на событиях ui-datepicker.
Если кому понадобится, вот код:
$(<селектор>).datepicker({ showButtonPanel: true, closeText: 'Выбрать',
onSelect: function (dateText, dp) {
$(this).datepicker('setDate', dateText);
dp.show();
},
onChangeMonthYear: function (year, month, dp) {
dp.currentMonth = month;
dp.currentYear = year;
var maxDay = 31;
if (dp.currentDay > 28) {
if (month == 2 && (year % 4 == 0 && year % 100 != 0 || year % 400 == 0))
maxDay = 29;
else {
var daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
maxDay = daysInMonth[month - 1];
}
if (dp.currentDay > maxDay)
dp.currentDay = maxDay.toString();
}
var dateStr = "";
dateStr += dp.currentDay < 10 ? "0" + dp.currentDay : dp.currentDay;
dateStr += ".";
dateStr += month < 10 ? "0" + month : month;
dateStr += "." + year;
$(this).datepicker('setDate', dateStr);
$(this).val(dateStr);
}
});