Um Rob Van Dams Antwort auszuarbeiten, hier ist ein Codebeispiel (mit jQuery UI Datepicker) zum Abrufen von aktivierten Daten mit AJAX. Ich verwende AJAX, um eine PHP-Seite abzufragen, die das aktivierte Datum aus einer Datenbank zurückgibt (weil ich nur Daten anzeigen möchte, in denen ich tatsächliche Daten habe).
Die Idee besteht darin, die AJAX-Abfrage jedes Mal durchzuführen, wenn der Benutzer den Monat ändert und dann die aktivierten Daten für diesen Monat in einem globalen Array (allowedDates) speichert, das später von beforeShowDay verwendet wird.
Natürlich könnten Sie die AJAX-Abfrage in beforeShowDay tun, aber dies wäre aufgrund der hohen Anzahl von AJAX-Abfragen (mehr als 30 für jeden Monat) ziemlich innecient.
var allowedDates = new Object();
function queryAllowedDates (year, month, id) {
$.ajax({
type: 'GET',
url: 'calendar_days.php',
dataType: 'json',
success: function(response) {
allowedDates[id] = response.allowedDates;
},
data: {year:year,month:month},
async: false
});
}
$("#datepicker1").datepicker({
dateFormat: 'dd.mm.yy',
changeMonth: true,
changeYear: true ,
beforeShow: function (input) {
var currentDate = $(input).datepicker('getDate');
var id = $(input).attr('id');
queryAllowedDates(currentDate.getFullYear(), currentDate.getMonth()+1,id);
},
onChangeMonthYear: function (year, month, inst) {
queryAllowedDates(year, month, inst.input.attr('id'));
},
beforeShowDay: function (day) {
var id = $(this).attr('id');
var date_str = [
day.getFullYear(),
day.getMonth() + 1,
day.getDate()
].join('-');
if (allowedDates[id] != undefined && allowedDates[id][date_str]) {
return [true, 'good_date', 'This date is selectable'];
} else {
return [false, 'bad_date', 'This date is NOT selectable'];
}
}
});
In diesem Beispiel gibt die PHP-Seite ein JSON-Array etwas ähnliches enthält:
{"allowedDates":{"2008-12-04":1,"2008-12-11":1}}
Welche server Technologie verwenden Sie? Sie haben nur die Kundenseite markiert? Je nach Server (asp.net usw.) stehen viele Steuerelemente zur Verfügung, mit denen Sie diese Funktionalität implementieren können. –
Es ist keine vollständige Antwort wert, aber ich konnte jQuery Quellcode stöbern und Wochenenden für einen guten Datepicker bearbeiten. – dmanexe