Ich habe die Funktionalität, die Sie angefordert haben, mit einem jQuery Datepicker implementiert.
Fügen Sie zunächst alle im Back-Office ausgewählten Daten in ein Array
// format yyyy-mm-dd
var disabledDates = [
"2012-10-01",
"2012-10-02",
"2012-10-30",
"2012-09-12"
];
Zweite deaktiviert werden, geben die Datepicker mit zwei Funktionen
$("#datepicker").datepicker({
// only enable date if dateEnabled returns [true]
beforeShowDay: dateEnabled,
// once a date has been selected call dateSelected
onSelect: dateSelected
});
Hier ist die Definition der erforderlichen Funktionen
function dateEnabled(d) {
// if date found in array disable date
if(disabledDates.indexOf(getDate(d)) > -1) {
return [false];
} else {
return [true] ;
}
}
Konvertieren Sie Datum in Zeichenfolge für den Vergleich mit Daten in Array
function getDate(d) {
var day,
month,
year;
day = d.getDate();
month = d.getMonth() + 1; // add 1 as getMonth returns 0 - 11
year = d.getFullYear();
if(month < 10) month = "0" + month;
if(day < 10) day = "0" + day;
return year + "-" + month + "-" + day;
}
Sobald ein Datum zu verarbeiten
function dateSelected(d) {
// do stuff with string representation of date
}
hier ausgewählt worden ist, ist eine Geige http://jsfiddle.net/KYzaR/7/
Ich dachte, es würde sich lohnen zu erwähnen, dass Array.indexOf eine neue Ergänzung ECMA ist -262 Standard und so im Fall von IE7 und IE8 wird es nicht unterstützt. Die folgende MDN-Seite enthält Code, der Array.indexOf für diese Browser implementiert https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf
Was bedeutet "in diesen Tagen finden" oder "habe diese Tage" wirklich? Ziel ist nicht klar – charlietfl