jQuery Datepicker: ограничить выбор даты в зависимости от дня недели - PullRequest
8 голосов
/ 18 апреля 2011

Можно ли изменить JQuery UI Datepicker так, чтобы пользователи могли выбирать, например, понедельники?

Ответы [ 5 ]

13 голосов
/ 19 апреля 2011

Вот и все: понедельники не выбираются:

$(document).ready(function(){
    $('input').datepicker({beforeShowDay: function(date){
        return [date.getDay() != 1, ''];
    }});
});

Пример работы, с которым можно поиграть здесь: http://jsfiddle.net/RaYZ5/19/.

Документация по API: http://docs.jquery.com/UI/Datepicker#event-beforeShowDay

7 голосов
/ 19 апреля 2011

Предыдущие сообщения были точно правильными.но более конкретно в отношении показа только понедельника:

1 голос
/ 19 апреля 2011

Если вы хотите решение ОЧЕНЬ ГИБКОЕ и деактивировать любую дату в течение определенного периода времени, вы можете сделать следующее:

$ dt_str идетбыть датами, которые вы хотите отключить.Например, вы можете структурировать его, используя PHP, и получать ваши даты из базы данных.

Когда загружается DOM, вызывается disableDates (), и происходит волшебство.

var avDays = <?php echo $dt_str ?>;

<script type='text/javascript'>

 $(document).ready(
    function(){
        // Datepicker
        $('.datepicker_event').datepicker(
        {
            inline: true,
            numberOfMonths: 2,
            beforeShowDay: disableDates 
        });
    }
)   

function disableDates(date) {

    var isAvailable = false ;

   // Find the days to deactivate
    if (avDays != null) {
        for (i = 0; i < avDays.length; i++) {
          if (date.getMonth() == avDays[i][0] - 1 && date.getDate() == avDays[i][1] && date.getFullYear() == avDays[i][2]) {
            isAvailable = true;
          }
        }
    }   

    if (isAvailable)  return [true, 'av_day'] ;
    else return [false, ''];
}

</script>
1 голос
/ 18 апреля 2011

Да, похоже на это:

$("#datepicker").datepicker({ beforeShowDay: $.datepicker.noWeekends });

Вам нужно написать функцию вместо $ .datepicker.noWeekends, чтобы делать то, что вы хотите.

http://docs.jquery.com/UI/Datepicker/noWeekends

0 голосов
/ 19 апреля 2011

Самый простой способ, которым я знаю:

$("#datepicker").datepicker({ 
    beforeShowDay: function(date) { 
        var day = date.getDay();
        return [(day > 0 && day < 6), ''];
    } 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...