Reputation:
I have the following code that blocks any date after 10am, I also need it to block weekends. How do I do this within my current function? I've tried a number of different solutions and had no luck.
var d = new Date();
var $checkTime = d.getHours();
jQuery(function() {
if ($checkTime >= 10) {
jQuery("#date").datepicker( {
minDate: +2,
maxDate: '+6M',
dateFormat: 'dd MM yy',
beforeShowDay: checkBadDates
});
} else {
jQuery("#date").datepicker( {
minDate: +1,
maxDate: '+6M',
dateFormat: 'dd MM yy',
beforeShowDay: checkBadDates
});
}
});
var $myBadDates = new Array({{ settings.bad_delivery_date }});
function checkBadDates(mydate){
var $return=true;
var $returnclass ="available";
var $checkdate = $.datepicker.formatDate('dd MM yy', mydate);
for(var i = 0; i < $myBadDates.length; i++)
{
if($myBadDates[i] == $checkdate)
{
$return = false;
$returnclass= "unavailable";
}
}
return [$return,$returnclass];
}
Upvotes: 1
Views: 112
Reputation: 632
One built in function exists, called noWeekends, that prevents the selection of weekend days.
$(".selector").datepicker({ beforeShowDay: $.datepicker.noWeekends })
To combine the two, you could do something like (assuming the bad date function from above):
$(".selector").datepicker({ beforeShowDay: noWeekendsOrBadDates})
function noWeekendsOrBadDates(date) {
var noWeekend = $.datepicker.noWeekends(date);
if (noWeekend[0]) {
return checkBadDates(date);
} else {
return noWeekend;
}
}
function checkBadDates(mydate){
var $return=true;
var $returnclass ="available";
var $checkdate = $.datepicker.formatDate('dd MM yy', mydate);
for(var i = 0; i < $myBadDates.length; i++)
{
if($myBadDates[i] == $checkdate)
{
$return = false;
$returnclass= "unavailable";
}
}
return [$return,$returnclass];
}
Upvotes: 3