jQuery UI Datepicker изменения minDate настроить календарь; как я могу заморозить это? - PullRequest
0 голосов
/ 22 июня 2010

У меня есть пятимесячный встроенный календарь Datepicker. startDate - это переменная, которую я написал, которая устанавливается событием щелчка пользователя. Я настраиваю параметры minDate и maxDate после init следующим образом:

$('#datepicker').datepicker("option",{"minDate":startDate,"maxDate":endDate}).datepicker("refresh");

Однако, когда календарь обновляется, он отображает первый месяц в соответствии с переменной startDate, которая дезориентирует. Например, у меня есть календарь init в январе, и он показывает до мая. Когда startDate приходится на более поздний месяц, например февраль, тогда, когда я обновляю календарь, он отображается начиная с этого месяца (февраля) и отключает все даты вплоть до выбранного. Я бы хотел заморозить календарь так, чтобы он всегда показывал с января по май, но вычеркивал все даты до minDate.

Существует ли простой способ заморозить календарь, чтобы он отображал определенный 5-месячный диапазон независимо от настроек minDate и maxDate?

Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 24 июня 2010

Я пытался взломать функцию minDate и maxDate, чтобы затемнить даты до выбранной даты.Вместо этого я построил массив объектов даты, которые я передаю до beforeShowDay, например:

   $('#datepicker').datepicker({
            ...
            beforeShowDay: setRestrictedDates,
            ...
   })
 function setRestrictedDates(date) {
  var arrLen = jsForbiddenDatesArray.length;
  for (var x=0; x<arrLen; x++) {
   var arraydate = jsForbiddenDatesArray[x];
   var arraytime = Math.round( new Date(arraydate).getTime() / 86400000 );
   var dtime = Math.round( date.getTime() / 86400000 );
   if ( dtime == arraytime || date.getDay() == 5) {
    return [false, ''];
    break;
   }
  }
  return $.datepicker.noWeekends(date);
 }

Обратите внимание, что установка времени dtime путем деления на 86400000 просто преобразует даты в дни, чтобы я мог сравнить их субедитесь, что два дня совпадают (dtime == время_рассылки).Кроме того, оператор OR "date.getDay () == 5" выбирает все пятницы.Это в сочетании с datepicker.noWeekends (date) означает, что у меня отключены выходные и пятницы, а также любые даты в моем массиве запрещенных дат.

Надеюсь, это кому-нибудь поможет.Установка даты отключения для datepicker очень удобна, но я нашел документацию для этого неясной.

Спасибо всем здесь и на форумах jQuery, которые помогли мне разобраться в этом.

1 голос
/ 24 июня 2010

Джон -

Я столкнулся с этой же проблемой и нашел в Интернете довольно крутое решение.Это делает визуализацию диапазона дат действительно простой, и для моего приложения предустановленные диапазоны дат очень хороши.

http://www.filamentgroup.com/lab/date_range_picker_using_jquery_ui_16_and_jquery_ui_css_framework/

Функция «диапазон» подробно описана внизу.Если вы проверите это, убедитесь, что не забыли связать соответствующий CSS-файл, так как он создаст или сломает скрипт.

Удачи.

1 голос
/ 23 июня 2010
$("#datepicker").datepicker({ showCurrentAtPos: new Date().getMonth(), numberOfMonths: 12, minDate: startDate, maxDate: endDate});
1 голос
/ 22 июня 2010

Можете ли вы попробовать поставить обновление перед параметрами?

...