Es gibt die beforeShowDay
Option, bei der für jedes Datum eine Funktion aufgerufen wird, die true zurückgibt, wenn das Datum zulässig ist, oder false, wenn dies nicht der Fall ist. Aus den Dokumenten:
beforeShowDay
Die Funktion verwendet ein Datum als Parameter und muss ein Array mit [0] gleich true / false zurückgeben, das angibt, ob dieses Datum auswählbar ist, und 1 gleich einem CSS-Klassennamen oder '' für die Standarddarstellung. Es wird für jeden Tag in der Datumsauswahl aufgerufen, bevor es angezeigt wird.
Zeigen Sie einige Nationalfeiertage im Datepicker an.
$(".selector").datepicker({ beforeShowDay: nationalDays})
natDays = [
[1, 26, 'au'], [2, 6, 'nz'], [3, 17, 'ie'],
[4, 27, 'za'], [5, 25, 'ar'], [6, 6, 'se'],
[7, 4, 'us'], [8, 17, 'id'], [9, 7, 'br'],
[10, 1, 'cn'], [11, 22, 'lb'], [12, 12, 'ke']
];
function nationalDays(date) {
for (i = 0; i < natDays.length; i++) {
if (date.getMonth() == natDays[i][0] - 1
&& date.getDate() == natDays[i][1]) {
return [false, natDays[i][2] + '_day'];
}
}
return [true, ''];
}
Es gibt eine integrierte Funktion namens noWeekends, die die Auswahl von Wochenendtagen verhindert.
$(".selector").datepicker({ beforeShowDay: $.datepicker.noWeekends })
Um beides zu kombinieren, können Sie Folgendes tun (unter der Annahme der nationalDays
Funktion von oben):
$(".selector").datepicker({ beforeShowDay: noWeekendsOrHolidays})
function noWeekendsOrHolidays(date) {
var noWeekend = $.datepicker.noWeekends(date);
if (noWeekend[0]) {
return nationalDays(date);
} else {
return noWeekend;
}
}
Update : Beachten Sie, dass ab jQuery UI 1.8.19 die Option beforeShowDay auch einen optionalen dritten Parameter akzeptiert, einen Popup-Tooltip
Uncaught TypeError: Cannot read property 'noWeekends' of undefined
die Nationalfeiertagsfunktion wie erwartetWenn Sie nicht möchten, dass die Wochenenden überhaupt erscheinen, einfach:
CSS
quelle
td.ui-datepicker-week-end { visibility: hidden; }
Diese Antworten waren sehr hilfreich. Danke dir.
Mein Beitrag unten fügt ein Array hinzu, in dem mehrere Tage false zurückgeben können (wir sind jeden Dienstag, Mittwoch und Donnerstag geschlossen). Und ich habe die spezifischen Daten plus Jahre und die Funktionen ohne Wochenende gebündelt.
Wenn Sie ein Wochenende frei haben möchten, fügen Sie [Samstag], [Sonntag] zum ClosedDays-Array hinzu.
quelle
Der Datepicker hat diese Funktionalität eingebaut!
http://api.jqueryui.com/datepicker/#utility-noWeekends
quelle
Die Lösung hier, die jeder mag, scheint sehr intensiv zu sein ... Ich persönlich denke, es ist viel einfacher, so etwas zu tun:
Auf diese Weise sind Ihre Daten für Menschen lesbar. Es ist nicht wirklich so anders, es macht für mich auf diese Weise einfach mehr Sinn.
quelle
Mit dieser Codeversion können Sie die Feiertagsdaten aus der SQL-Datenbank abrufen und das angegebene Datum im UI-Datepicker deaktivieren
Erstellen Sie eine Datenbank in SQL und geben Sie Ihre Urlaubsdaten im Format MM / TT / JJJJ als Varchar ein. Fügen Sie den folgenden Inhalt in eine Datei getdate.php ein
Viel Spaß beim Codieren !!!! :-)
quelle
Mit der Funktion noWeekends können Sie die Wochenendauswahl deaktivieren
quelle
quelle
In dieser Version bestimmen Monat, Tag und Jahr, welche Tage im Kalender blockiert werden sollen.
quelle
Zum Deaktivieren von Tagen können Sie so etwas tun.
<input type="text" class="form-control datepicker" data-disabled-days="1,3">
Dabei ist 1 Montag und 3 Mittwochquelle
In der neuesten Bootstrap 3-Version (bootstrap-datepicker.js) wird
beforeShowDay
ein Ergebnis in diesem Format erwartet:Wenn Sie sich nicht für CSS und Tooltip interessieren, geben Sie einfach einen Booleschen Wert zurück
false
, um die Auswahl des Datums aufzuheben.Es gibt auch keine
$.datepicker.noWeekends
, also müssen Sie etwas in dieser Richtung tun:quelle
Für Samstag und Sonntag können Sie so etwas tun
quelle