jQuery UI Datepicker - Disable specific days

Here is a way to disable specific dates from being selected:

var unavailableDates = ["9-5-2011","14-5-2011","15-5-2011"];

function unavailable(date) {
  dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear();
  if ($.inArray(dmy, unavailableDates) < 0) {
    return [true,"","Book Now"];
  } else {
    return [false,"","Booked Out"];
  }
}

$('#iDate').datepicker({ beforeShowDay: unavailable });

Source: jQuery - Datepicker - Disable Specific Dates


Have you tried declaring natDays properly with the 'var' keyword in front?

Also - you have an extra comma at the end of your natDays definition.

natDays[i][2] won't work as your the arrays only have 2 items in them - try just ''

Additionally, you'll want to set your beforeShowDay function name correctly - doesn't look like it's even calling your custom function


You can use the beforeShowDay option. I needed to disable any day past the 28th of the month. Here is my code.

$('.datepicker').datepicker({
    dateFormat: "yy-mm-dd",
    beforeShowDay: function(date) {
        var day = date.getDate();
        if (day > 28) {
            return [false];
        } else {
            return [true];
        }
    }
});

Here is more information about it: http://api.jqueryui.com/datepicker/#option-beforeShowDay

The date variable passed into the beforeShowDay callback is a JavaScript date object, so it can be formatted using various libraries, a timestamp can be retrieved using date.getTime(), etc.