2014-01-07 4 views
1

У меня есть требование, где мне нужно, чтобы показать все предстоящие пятницы месяца, но с некоторыми правилами:jqueryui DatePicker времени и день ограничения

  1. Чтобы показать предстоящие те и не предыдущие пятницы.
  2. понедельника до среды в 10 часов утра, шоу пятницы текущей неделе
  3. После среды 10:01 утра до воскресенья, шоу пятницы на следующей неделе

То, что я сделал до сих пор показывает, охватывает первый пункт совершенно нормален, но я действительно не знаю, как двигаться дальше с двумя другими моментами.

Вот что я сделал:

 var minimumDate = dateParser(MyProfile.nextDistDate); 
     var parsedMinimumDate = new Date(); 
     console.log(" parsedMinimumDate : "+parsedMinimumDate); 
     $("#delivery_from_date").datepicker({ 
      defaultDate : "+1w", 
      dateFormat: "dd/mm/yy", 
      regional: 'en', 
      changeMonth: true, 
      minDate: minimumDate, 
      firstDay: 1, 
      beforeShowDay: function(date) { 
      return [date.getDay() == 5]; 
      } 
     }); 

minimumDate является переменной, которая состоит из даты, которая по умолчанию в ближайшую пятницу.

Вопросы продавцу?

+0

Что такое 'MyProfile.nextDistDate'? – Danny

+0

@ Danny Thats timestamp. – Maverick

ответ

2

Проверьте день недели, и если это проверка среды, если это более 10 часов, а также, и установить минимальную дату сегодня или неделю вперед в зависимости от того, в какой день это:

var date = new Date(); 
var day = date.getDay(); 
var min = 0; 

if (day >= 3) { // wednesday -> saturday 23:59 
    if (day == 3) { // it's a wednesday 
     if (date.getHours() > 10) { // it's over 10 am 
      min = '+1w'; 
     } 
    }else{ // it's thursday -> sunday 
     min = '+1w'; 
    } 
} 

$("#delivery_from_date").datepicker({ 
    defaultDate : "+1w", 
    dateFormat : "dd/mm/yy", 
    regional  : 'en', 
    changeMonth : true, 
    minDate  : min, 
    firstDay  : 1, 
    beforeShowDay : function (date) { 
     return [date.getDay() == 5]; 
    } 
}); 

FIDDLE

+0

Отлично! Я сделал несколько изменений, например, вместо того, чтобы проверять больше, чем 10, я проверяю на> =. Он работает как шарм. – Maverick

1

Вы можете просто попробовать это:

var minimumDate = dateParser(MyProfile.nextDistDate); 
var today= new Date(); 

if(today.getDay() >= 3 && today.getHours() >= 10){ 
    minimumDate.setDate(minimumDate.getDate()+7); 
} 

код проверяет, если сегодня> Среда &> 10hr ... если это, чем это добавляет 7 дней до минимальной даты => На следующей неделе

Смежные вопросы