Предполагая, что вы используете плагин Validate, вы можете написать собственное правило, которое переопределяет собственную логику ui.Datepicker для определения, какие даты выбрать или нет. Я должен был написать это сегодня и подумал, что кто-то еще мог бы выиграть, зная, как:
jQuery.validator.addMethod("vdate", function(value, element) {
// Datepicker's internal method for choosing selectable ported to a custom validator method.
// All criteria are the same, except othermonth is omitted.
var inst = $.data(element,'datepicker'); // instance data used internally by datepicker's functions
var printDate = $(element).datepicker("getDate");
var minDate = $.datepicker["_getMinMaxDate"](inst, 'min', true);
var maxDate = $.datepicker["_getMinMaxDate"](inst, 'max');
var beforeShowDay = $.datepicker["_optionDatepicker"](element,'beforeShowDay');
var daySettings = (beforeShowDay ? beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']);
var unselectable = (!daySettings[0] || (minDate !=null && (printDate < minDate)) || (maxDate !=null && (printDate > maxDate)));
return (this.optional(element) || !unselectable);
}, "Please choose a valid date");
Этот конкретный метод addMethod обладает преимуществом проверки каждого поля по отдельности, поэтому, если у вас есть несколько сборщиков дат, совместно использующих имя класса 'vdate', но, возможно, имеющие различные настройки minDate / maxDate / beforeShowDay, Validate будет проверять и следовать собственным правилам каждого datepicker.
Кроме того, если вы написали сложную функцию для beforeShowDay, которая исключает выходные, дни, номера которых являются простыми, день рождения вашей жены и последний день каждого месяца, при условии, что она работает в ui.Datepicker, Validate распознает все они также являются недействительными датами.