Changing date to be shown on datepicker

Asked

Viewed 1,536 times

4

I’m making a calendar with datepicker, and I need this calendar to show only Mondays, and most importantly, to show a month after the current date, IE, will have to show from the day 27/05 only Mondays.

I already got him to show Mondays, now my question is, how do I get him to show from next month?

JS Code:

$(function() {
          $( "#data-inicio" ).datepicker({
             beforeShowDay: function(date){ 
              return [date.getDay() == 1,""]} 
          });

2 answers

4

You may add minDate to define the minimum selection date, the beforeShowDay to enable the available days (you have already managed, but only to illustrate everything):

$(function() {
    // Data atual, já considerado a partir do próximo mês
    var today = new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() + 30);
    // Verifica se esta data cai em uma segunda-feira
    // Se não cair, precisa obter a próxima segunda depois deste dia
    if (today.getDay() != 1) {
        // Primeiro dia do próximo mês para calcular quantos dias faltam para o mês atual acabar
        var nextMonth = new Date(today.getFullYear(), today.getMonth() + 1, 1);
        // Total de dias para acabar o mês. A subtração é feita em milessegundos, então as multiplicações são realizadas para obter este valor em dias
        var days = Math.floor((nextMonth - today) / (1000*60*60*24))
        // Se faltam menos de 7 dias para virar o mês, quer dizer que não existirá outra segunda-feira neste, então a data mínima do datepicker será no próximo mês.
        if (days < 7)
            today = new Date(today.getFullYear(), today.getMonth(), today.getDate() + days);
    }

    $("#datepicker").datepicker({
        beforeShowDay: function(date){ return [date.getDay() == 1, ""] },
        minDate: today
    });
});

Jsfiddle

2

Browser other questions tagged

You are not signed in. Login or sign up in order to post.