2011-05-26 5 views
3

J'utilise beforeShowDay pour exclure les jours fériés et les week-ends, mais je souhaite que les beforeShowDays soient exclus lors du calcul de minDate.Exclut beforeShowDay lors de la détermination minDate

E.g. Si le jour de la semaine est vendredi et que minDate est 2, je veux que le week-end soit exclu de l'équation. Donc, au lieu de lundi étant la première date que vous pouvez sélectionner, je veux que ce soit mercredi.

Ceci est mon jQuery:

$("#date").datepicker({ 
minDate: 2, maxDate: "+12M", // Date range 
beforeShowDay: nonWorkingDates 
}); 

Est-ce que quelqu'un sait comment faire cela?

Répondre

2

Que diriez-vous quelque chose comme ceci:

function includeDate(date) { 
    return date.getDay() !== 6 && date.getDay() !== 0; 
} 

function getTomorrow(date) { 
    return new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1); 
} 

$("#date").datepicker({ 
    beforeShowDay: function(date) { 
     return [includeDate(date)]; 
    }, 
    minDate: (function(min) { 
     var today = new Date(); 
     var nextAvailable = getTomorrow(today); 
     var count = 0; 
     var newMin = 0; // Modified 'min' value 

     while(count < min) { 
      if (includeDate(nextAvailable)) { 
       count++; 
      } 
      newMin++; // Increase the new minimum 
      nextAvailable = getTomorrow(nextAvailable);    
     } 
     return newMin; 
    })(2) // Supply with the default minimum value. 
}); 

Fondamentalement, savoir où la prochaine date de validité est, tirant parti de la méthode que vous avez déjà défini pour beforeShowDay. Si ma logique est correcte (et vous excluez uniquement les week-ends), cette valeur ne peut être que 2 ou 4: 2 S'il y a des week-ends sur le chemin (jeudi ou vendredi) et 2 sinon.

Cela devient plus compliqué si vous avez d'autres jours que vous excluez, mais je pense que la logique suit toujours.

Voici le code sur le violon: http://jsfiddle.net/TpSLC/