Ian McIntyre Silber
Ian McIntyre Silber

Reputation: 5663

jQuery UI DatePicker - Disable all days except last day of month

I'm trying to use the jquery UI datepicker to show a calendar with only the last day of the month selectable.

I've successfully used the beforeShowDay event to disable days of the week but not sure how I'd use this to disable everything but the last day of the month.

Upvotes: 11

Views: 14179

Answers (2)

user351178
user351178

Reputation:

beforeShowDay is called for every date shown on the calender. When beforeShowDay is called, you need to determine if the date passed to it is the last day of the month.

The following JScript will return the last day of the month for a given year and month.

function LastDayOfMonth(Year, Month)
{
    return(new Date((new Date(Year, Month+1,1))-1)).getDate();
}

Use the following code to determine if the beforeShowDay's date is the last of the month:

$('.selector').datepicker({
    beforeShowDay: function (date) {
        //getDate() returns the day (0-31)
        if (date.getDate() == LastDayOfMonth(date.getFullYear(),date.getMonth())) {
            return [true, ''];
        }
        return [false, ''];
    }
});

Upvotes: 15

Siva
Siva

Reputation: 11

function LastDayOfMonth(Year, Month) { 
    //set next month first day
    //substract one day from it.        
    return new Date(new Date(Year, Month+1,1)-1).getDate(); 
} 

This will work

Upvotes: 1

Related Questions