Bonjour,

Un datepicker et un timepicker pour fixer une réservation.
La réservation peut avoir lieu le jour même avec une limite de 30min.
Tout cela est conditionné dans $(document)ready, jusque là pas de probléme.

Le soucis se pose quand on change la date sur le datepicker.
Impossible d'actualiser le timepicker et débloquer toute les heures.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
 
// JavaScript Document
 
$(document).ready(function() {
 
	currentTime = new Date();
	currentHour = currentTime.getHours();
	currentMin = currentTime.getMinutes();
	currentDay = currentTime.getDate()
	var defaultHour = 0; 
	var defaultMin = 0;
	var minDate = 0;
 
	if(currentHour == 23 && currentMin >= 21){minDate++}
 
	$('#datepicker').datepicker({
		inline: true, numberOfMonths: 2,minDate: minDate, 
		showOtherMonths: true, selectOtherMonths: true, altField: "#frm_date", altFormat: "DD, d MM yy",
		firstDay: 1, showWeek: true,
		monthNames: [ "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" ],
		monthNamesShort: [ "Jan", "Fev", "Mar", "Avr", "Mai", "Jun", "Jul", "Aou", "Sep", "Oct", "Nov", "Déc" ],
		dayNames:[ "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi" ] ,
		dayNamesMin:[ "Di", "Lu", "Ma", "Me", "Je", "Ve", "Sa" ],
		dayNamesShort:[ "Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam" ],
		onSelect: function(){}/*<<<<------------------ je parviens pas à fair l'appel de OnHourShowCallback pour actualiser les heures du timepicker*/
	});
 
	defaultHour = currentHour;
	if (currentMin >= 21){
		defaultHour ++;
		defaultMin = (currentMin + 30)-60;
		defaultMin = 10*Math.floor(defaultMin/10);
		} else {
		defaultMin = 10*Math.floor(currentMin/10);
	}
 
	if(defaultHour == 24){defaultHour = 0}
 
	$('#timepicker').timepicker({timeSeparator: ':', defaultTime: defaultHour+':'+defaultMin, altField: "#frm_hour", rows: 2,  showPeriodLabels: true, minutes: {
		starts: 0,                // First displayed minute
		ends: 50,                 // Last displayed minute
		interval: 10 },              // Interval of displayed minutes
		hourText: 'Heure',             // Define the locale text for "Hours"
		minuteText: 'Minute',         // Define the locale text for "Minute"
		amPmText: ['AM', 'PM'],
		onHourShow: OnHourShowCallback,
		onMinuteShow: OnMinuteShowCallback
	});	
 
	$('#frm_hour').val($('#timepicker').timepicker('getTime'))
 
});		
 
function OnHourShowCallback(hour) {
	var selectedDay = $('#datepicker').datepicker('getDate').getDate();
 
	if (currentDay < selectedDay){currentHour = -1;}
 
	if (currentHour == 23 && currentMin >=21){currentHour = -1}
	if (hour < currentHour) {
		return false; 
	} else if((hour == currentHour) && (currentMin >= 21)){return false;} 
	return true;
}
 
function OnMinuteShowCallback(hour, minute) {
	var excessMin;
 
	if( (currentMin + 30) > 60){excessMin = (currentMin + 30)-60}else{excessMin = 0};
 
	if ((hour == currentHour) && (minute < (currentMin + 30))) { return false; } 
	if ((hour == currentHour+1) && (minute < excessMin)){return false;}  // not valid
	return true;  // valid
}

Le probléme selon moi, ce situe à la ligne 25:
Je parviens pas à lancé la fonction OnHourShowCallback() depuis le datepicker.

Le reste du code et fonctionnel. A raison, si je modifie:
Ligne17: minDate: minDate+1;
Alors la condition est valable et débloque toute les heures.
Ligne57: if (currentDay < selectedDay){currentHour = -1;}

Voici la page en ligne:
http://ktsgroup.be/temp/temp.html

J'ai omis de vou ajouter le lien du timepicker que j'utilise.
http://fgelinas.com/code/timepicker/
Encore merci votre précieuse aide.