user6461366
user6461366

Reputation:

Block weekends with jQuery Datepicker inside function?

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

Answers (1)

Premanand K
Premanand K

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

Related Questions