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'を共有する複数のdatepickerがあり、minDate / maxDate / beforeShowDay設定が異なる場合、Validateは各datepickerの独自のルールをチェックして従います。
また、beforeShowDayに複雑な関数を記述して、週末、素数の日、妻の誕生日、毎月の最終日を除外した場合、ui.Datepickerで機能する限り、Validateはそれらすべてを認識します。無効な日付としても。