После того как я установил minDate свойство datepicker с удобным строковым синтаксисом
$(elem).datepicker('option','minDate','+1d +3m');
как я могу получить объект даты minDate? Чтобы помочь проиллюстрировать, существует метод
$(elem).datepicker('getDate');
который возвращает дату, которая вводится во вход в формате объекта даты. Я хотел бы то же самое, но за datepicker ('getMinDate'). Существует опция как это
$(elem).datepicker('option','minDate');
но это возвращается '+1d +3m', который не полезен. Мне нужен фактический объект даты соответствовать другому объекту даты. Какие-либо идеи?
jQuery использует свою функцию _determineDate ()
для вычисления объекта даты minDate на основе его атрибута. Я изменил его поведение и создал функцию. Обратите внимание, что он имеет дело только с типом значений «смещение» и ни с чем другим.
/* minDateAttr is the minDate option of the datepicker, eg '+1d +3m' */
function getMinDate(minDateAttr) {
var minDate = new Date();
var pattern = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g;
var matches = pattern.exec(minDateAttr);
while (matches) {
switch (matches[2] || 'd') {
case 'd' : case 'D' :
minDate.setDate(minDate.getDate() + parseInt(matches[1],10));
break;
case 'w' : case 'W' :
minDate.setDate(minDate.getDate() + parseInt(matches[1],10) * 7);
break;
case 'm' : case 'M' :
minDate.setMonth(minDate.getMonth() + parseInt(matches[1],10));
break;
case 'y': case 'Y' :
minDate.setYear(minDate.getFullYear() + parseInt(matches[1],10));
break;
}
matches = pattern.exec(minDateAttr);
}
return minDate;
}
Функция _determineDate ()
технически доступна для использования, но не должна использоваться и может измениться в будущее. Тем не менее, вот как его использовать:
var minDateAttr = $(elem).datepicker("option", "minDate");
var inst = $(elem).data("datepicker");
var minDateObj = $.datepicker._determineDate(inst, minDateAttr, new Date());