2015-06-05 4 views
2

Мне нужно skip выходные в календаре DatePicker. Первое сообщение ниже помогло мне выяснить, как блок в выходные, однако это на его собственном не будет работать для того, что мне нужно.DatePicker block out выходные

Позвольте мне привести несколько примеров:

  1. Допустим, сегодня понедельник. Лучшие 3 варианта будут показаны в понедельник, Вторник & Среда.
  2. Теперь можно сказать, что сегодня четверг. Следующие 3 варианта, показанные в календаре, будут в четверг, пятницу & Понедельник.
  3. Наконец, скажем, сегодня суббота. Следующие 3 варианта, показанные в календаре, будут в понедельник, вторник, среду.

Другими словами, всегда должно быть доступно 3 дня, и это должно быть только в будние дни.

<script> 
//initialise datepicker 
$(function() { 
    $(".datepicker").datepicker({ 
     dateFormat: 'dd/mm/yy', 
     minDate: 0, 
     maxDate: 2 
    }); 
    /* 
    $('body').on('focus',".datepicker", function(){ 
    $(this).datepicker({dateFormat: 'dd/mm/yy'}); 
    })*/ 

    $('.cal').on('click', function(e) { 
    var target = $(this).closest('.calendar').find('.datepicker'); 
    target.datepicker('show'); 
    }); 
}); 

</script> 

ответ

4

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

$("#datepicker").datepicker({ 
    dateFormat: 'dd/mm/yy', 
    beforeShowDay: $.datepicker.noWeekends, 
    minDate: 0, 
    maxDate: (function() { 
     var today = new Date().getDay(), add = 0; 
     switch (today) { 
      case 0: 
       add = 1; 
       break; 
      case 4: 
      case 5: 
      case 6: 
       add = 2; 
       break; 
     } 
     return 2 + add; 
    })() 
}); 
+0

Это похоже на работу, спасибо, но есть ли более чистые решения? – V4n1ll4

+0

@ V4n1ll4 Мне кажется, нужно взломать источник datepicker. – iamawebgeek

1

Предполагая, что вы используете JQuery UI Datepicker (другие datepickers доступны):

$("#datepicker").datepicker({ 
    dateFormat: 'dd/mm/yy', 
    minDate: 0, 
    maxDate: 2, 
    beforeShowDay: $.datepicker.noWeekends 
}); 

Ссылка на documentation.

beforeShowDay принимает функцию как обратный вызов, чтобы определить, какие дни следует показывать, при этом функция возвращает true или false на основе дня. Например, можно поставить пользовательскую функцию, чтобы исключить только воскресенья.

+0

Спасибо, я просто попытался это, и это блоки из выходных. Однако он не показывает следующие две доступные даты. Например, если я посмотрю на календарь сегодня, он должен показать пятницу, понедельник и вторник – V4n1ll4