jQuery datepicker getMinDate '+1d'

После того как я установил minDate свойство datepicker с удобным строковым синтаксисом

$(elem).datepicker('option','minDate','+1d +3m'); 

как я могу получить объект даты minDate? Чтобы помочь проиллюстрировать, существует метод

 $(elem).datepicker('getDate');

который возвращает дату, которая вводится во вход в формате объекта даты. Я хотел бы то же самое, но за datepicker ('getMinDate'). Существует опция как это

$(elem).datepicker('option','minDate');

но это возвращается '+1d +3m', который не полезен. Мне нужен фактический объект даты соответствовать другому объекту даты. Какие-либо идеи?

7
задан Adrian Adkison 21 May 2010 в 20:22
поделиться

1 ответ

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());
7
ответ дан 7 December 2019 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: