jQuery UI DatePicker:Zakázat zadané dny

Jeden projekt, na kterém právě pracuji, vyžaduje jQuery. Součástí projektu je také datepicker pro vyžádání návštěvy jejich místa. Plugin DatePicker uživatelského rozhraní jQuery byl přirozenou volbou a odvádí opravdu dobrou práci. Jednou z výzev, se kterými jsem se setkal, byla potřeba zabránit výběru konkrétních dnů. Zde je JavaScript jQuery, který jsem k tomu použil.

Zobrazit ukázku

JavaScript jQuery

/* create an array of days which need to be disabled */
var disabledDays = ["2-21-2010","2-24-2010","2-27-2010","2-28-2010","3-3-2010","3-17-2010","4-2-2010","4-3-2010","4-4-2010","4-5-2010"];

/* utility functions */
function nationalDays(date) {
	var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
	//console.log('Checking (raw): ' + m + '-' + d + '-' + y);
	for (i = 0; i < disabledDays.length; i++) {
		if($.inArray((m+1) + '-' + d + '-' + y,disabledDays) != -1 || new Date() > date) {
			//console.log('bad:  ' + (m+1) + '-' + d + '-' + y + ' / ' + disabledDays[i]);
			return [false];
		}
	}
	//console.log('good:  ' + (m+1) + '-' + d + '-' + y);
	return [true];
}
function noWeekendsOrHolidays(date) {
	var noWeekend = jQuery.datepicker.noWeekends(date);
	return noWeekend[0] ? nationalDays(date) : noWeekend;
}

/* create datepicker */
jQuery(document).ready(function() {
	jQuery('#date').datepicker({
		minDate: new Date(2010, 0, 1),
		maxDate: new Date(2010, 5, 31),
		dateFormat: 'DD, MM, d, yy',
		constrainInput: true,
		beforeShowDay: noWeekendsOrHolidays
	});
});

Základní kód je převzat z tohoto příspěvku na fóru. Všimněte si, že jsem vytvořil pole dat v řetězcovém formátu, který také vyhovuje pro porovnání roku.

Zobrazit ukázku

Rád bych viděl, aby uživatelské rozhraní jQuery implementovalo standardní způsob deaktivace dnů. Jejich DatePicker je ale velmi pěkný, takže si nemůžu moc stěžovat!