2016-12-27 5 views
0

У меня есть датпикер, назначенный нескольким полям с массивом определенных дат, уже отключенных в моем атрибуте beforeShowDay.JQuery UI Datepicker Отключить месяц при выборе

.datepicker({ beforeShowDay: disablePaymentDates, minDate: 0, maxDate: afterSixMonths }); 

Я пытаюсь отключить месяц с даты, которую пользователь выбирает для всех датпикеров. Есть какой-либо способ сделать это?

+0

Что такое "disablePaymentDates"? массив ? это должна быть функция с датой в качестве параметра. http://api.jqueryui.com/datepicker/#option-beforeShowDay – roetnig

+0

Его массив держит даты в формате mm/dd. – Tyharo

ответ

0

Я выяснил решение, подобное Roetnig's. Я добавил следующий код функции, которую вызывает атрибут beforeShowDay.

var monthsToDisable= []; 
if ($.inArray(date.getMonth(date), monthsToDisable) > -1) { 
    $return = false; 
    $returnclass = "unavailable"; 
} 

Затем я заполняю «monthsToDisable» соответствующими месяцами (0-11). Поскольку этот массив будет обновляться на основе пользовательского действия, мне просто нужно было просто повторно применить датупиксера после обновления массива.

1

Как указано в datepicker API:

beforeShowDay

Тип: Функция (дата Дата)

По умолчанию: нулевой

Функция, которая принимает дату в качестве параметра и должен вернуть массив с:

[0]: true/false, указывающее, доступна ли эта дата или нет. [1]: имя класса CSS для добавления в ячейку даты или "" для представления по умолчанию [2]: всплывающая всплывающая подсказка для этой даты

Функция вызывается для каждого дня в datepicker перед ее отображением.

.datepicker({ 
    minDate: 0, 
    maxDate: afterSixMonths, 
    beforeShowDay: function(date) { 
     var dd = date.getDate(); 
     if ($.inArray(dd, disablePaymentDates)!= -1) { 
      return [false, "", "disabled" ]; 
     } else { 
      return [true, "", "enabled" ]; 
     } 
    } 
}); 
+0

Итак, мне нужно было бы повторно выбрать сборщик дат для всех элементов, чтобы отключить месяц, когда выбрана дата? – Tyharo

+1

Вы можете добавить все, что хотите внутри функции ... отключить определенные дни недели, текущий месяц, что угодно. Вы получаете дату в функции, проверяете ее достоверность и возвращаете три значения. Это был всего лишь пример использования. – roetnig

0

Или вы можете отключить диапазон дат с использованием moment.js

var disableRangeStartDate = '2017-10-29'; 
var disableRangeEndDate = '2018-04-18'; 

.datepicker({ 
isInvalidDate: function(arg){ 
     var thisMonth = arg._d.getMonth()+1; 
     if (thisMonth<10){thisMonth = "0"+thisMonth;} 
     var thisDate = arg._d.getDate(); 
     if (thisDate<10){thisDate = "0"+thisDate;} 
     var thisYear = arg._d.getYear()+1900; 
     var thisCompare = thisYear +"-"+ thisMonth +"-"+ thisDate; 

    return moment(thisCompare).isBetween(disableRangeStartDate, disableRangeEndDate); 
     } 
}); 
Смежные вопросы