6

J'utilise jquery UI Datepicker sur un projet énorme et je me rends compte maintenant que je ne devrais autoriser que certains jours de la semaine sur certaines zones. J'ai lu leur documentation et je n'y ai rien trouvé .. Je sais qu'il y a des scripts datepickers pour jq qui peuvent le faire mais je ne veux pas utiliser de script supplémentaire pour ça si c'est possible. Quelqu'un sait-il une solution de contournement pour cela? Peut-être que je suis mal compris dans leur documentation?jQuery UI Datepicker - autoriser seulement certains jours de la semaine

REMARQUE: exemple de comportement souhaité: http://codeasp.net/blogs/raghav_khunger/microsoft-net/1088/jquery-datepicker-disable-specific-weekdays

Merci à l'avance de l'aide, Vive Pedro

+3

le lien que vous avez publié contient la réponse complète à vous poser des questions .. –

+1

@Gaby: ET une démo! –

+0

@Andrew, yeap ... assez straight-foward. –

Répondre

2

De la documentation:

beforeShowDay: La fonction prend une date en tant que paramètre et doit renvoyer un tableau avec [0] égal à true/false indiquant si cette date est sélectionnable ou non, [1] égal à un ou plusieurs noms de classe CSS ou '' pour la présentation par défaut, et [2] une info-bulle contextuelle facultative pour cette date. Il est appelé chaque jour dans le programme datepicker avant d'être affiché.

Pour un exemple, s'il vous plaît voir ici:

http://codeasp.net/blogs/raghav_khunger/microsoft-net/1088/jquery-datepicker-disable-specific-weekdays

+0

Trouvé dans les commentaires du blog qui semblait légèrement mieux http://jquerybyexample.blogspot.com/2010/07/disable-specific-days-in-jquery.html –

7
$(".datepicker.future").datepicker('option','beforeShowDay',function(date){ 
    var td = date.getDay(); 
    var ret = [(date.getDay() != 0 && date.getDay() != 6),'',(td != 'Sat' && td != 'Sun')?'':'only on workday']; 
    return ret; 
}); 
+0

La variable td se voit affecter une valeur entière, mais il est étant comparé aux chaînes. Je pense que vous vouliez ceci: var td = ['Sun', 'Mon', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sat'] [date.getDay()]; – primehalo

5

@Jan Thomas a oublié d'ajouter la variable td. Le code est correct:

$(".datepicker.future").datepicker('option','beforeShowDay',function(date){ 
    var td = date.getDay(); 
    var ret = [(date.getDay() != 0 && date.getDay() != 6),'',(td != 'Sat' && td != 'Sun')?'':'only on workday']; 
    return ret; 
}); 
+1

peut être "sat" si c'est une représentation NUMÉRIQUE du jour donné? Un bug ou je ne comprends pas. – Tyler

+0

La variable td reçoit une valeur entière, mais elle est comparée aux chaînes. Je pense que vous vouliez ceci: var td = ['Sun', 'Mon', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sat'] [date.getDay()]; – primehalo

3
$('selector').datepicker({ 
beforeShowDay: $.datepicker.noWeekends // disable weekends 
}); 
0

La réponse de Jean Mallet (beforeShowDay: $.datepicker.noWeekends) est simple et élégant.

Cependant, si vous appelez déjà une fonction en utilisant beforeShowDay (comme je l'étais dans mon cas), voici comment vous pouvez désactiver certains jours de la semaine (dans ce cas, dimanche et samedi), enchaînés avec le reste de votre fonction:

beforeShowDay: function (date) { 

    /* your other function code here */ 

    if (date.getDay() > 0 && date.getDay() < 6) { 
     return [true, '']; 
    } else { 
     return [false, '']; 
    } 
} 

enter image description here

Questions connexes