Il y a l' beforeShowDay
option, qui prend une fonction à appeler pour chaque date, retournant true si la date est autorisée ou false dans le cas contraire. De la documentation:
beforeShowDay
La fonction prend une date comme paramètre et doit renvoyer un tableau avec [0] égal à vrai / faux indiquant si cette date est sélectionnable et 1 égal à un ou plusieurs noms de classe CSS ou '' pour la présentation par défaut. Il est appelé pour chaque jour dans le sélecteur de date avant qu'il ne s'affiche.
Affichez certaines fêtes nationales dans le sélecteur de dates.
$(".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, ''];
}
Il existe une fonction intégrée, appelée noWeekends, qui empêche la sélection des jours de week-end.
$(".selector").datepicker({ beforeShowDay: $.datepicker.noWeekends })
Pour combiner les deux, vous pouvez faire quelque chose comme (en supposant la nationalDays
fonction ci-dessus):
$(".selector").datepicker({ beforeShowDay: noWeekendsOrHolidays})
function noWeekendsOrHolidays(date) {
var noWeekend = $.datepicker.noWeekends(date);
if (noWeekend[0]) {
return nationalDays(date);
} else {
return noWeekend;
}
}
Mise à jour : Notez que depuis jQuery UI 1.8.19, l' option beforeShowDay accepte également un troisième paramètre optionnel, une info-bulle contextuelle
Uncaught TypeError: Cannot read property 'noWeekends' of undefined
la fonction des journées nationales comme prévuSi vous ne voulez pas du tout que les week-ends apparaissent, simplement:
CSS
la source
td.ui-datepicker-week-end { visibility: hidden; }
Ces réponses ont été très utiles. Je vous remercie.
Ma contribution ci-dessous ajoute un tableau où plusieurs jours peuvent retourner faux (nous sommes fermés tous les mardi, mercredi et jeudi). Et j'ai regroupé les dates spécifiques plus les années et les fonctions sans week-end.
Si vous voulez des week-ends, ajoutez [samedi], [dimanche] au tableau closedDays.
la source
Le datepicker a cette fonctionnalité intégrée!
http://api.jqueryui.com/datepicker/#utility-noWeekends
la source
La solution ici que tout le monde aime semble très intense ... personnellement, je pense qu'il est beaucoup plus facile de faire quelque chose comme ça:
De cette façon, vos dates sont lisibles par l'homme. Ce n'est pas vraiment si différent que ça a plus de sens pour moi de cette façon.
la source
Cette version du code vous permettra d'obtenir les dates de vacances à partir de la base de données SQL et de désactiver la date spécifiée dans le sélecteur de dates de l'interface utilisateur
Créez une base de données en sql et mettez vos dates de vacances au format MM / JJ / AAAA comme Varchar Mettez le contenu ci-dessous dans un fichier getdate.php
Happy Coding !!!! :-)
la source
Vous pouvez utiliser la fonction noWeekends pour désactiver la sélection du week-end
la source
la source
Dans cette version, le mois, le jour et l' année déterminent les jours à bloquer sur le calendrier.
la source
pour désactiver les jours, vous pouvez faire quelque chose comme ça.
<input type="text" class="form-control datepicker" data-disabled-days="1,3">
où 1 est lundi et 3 est mercredila source
Dans la dernière version de Bootstrap 3 (bootstrap-datepicker.js)
beforeShowDay
attend un résultat dans ce format:Alternativement, si vous ne vous souciez pas du CSS et de l'info-bulle, renvoyez simplement un booléen
false
pour rendre la date non sélectionnable.En outre, il n'y en a pas
$.datepicker.noWeekends
, vous devez donc faire quelque chose dans le sens de ceci:la source
Pour samedi et dimanche, vous pouvez faire quelque chose comme ça
la source