11486 sujets

JavaScript, DOM et API Web HTML5

Salut,
Je cherche à créer un message d'erreur et redemander la saisie lorsque l'heure sélectionnée par l'utilisateur est < 2h (par rapport à l'heure actuelle). L'heure choisie par l'utilisateur doit être au minimum 2 heures plus tard que celle de la saisie. Pouvez-vous m'aider ? Merci d'avance.

<!-- HEURE -->

					<input type="time" name="Datetimepicker2" id="Datetimepicker2">
							<script>

								jQuery('#Datetimepicker2').datetimepicker({
 								datepicker:false,
 								format: 'H:i',
 								inline:true,
 								
 								step:15,
 								minTime:'7:00',//7h00=minimum time
 								maxTime:'21:30'//21h00=maximum time
								});
							
								$timevalue = (isset($_POST['Datetimepicker2'])) ? $_POST['Datetimepicker2'] : '';
							
							</script>
Modérateur
Et l'eau,

tu as sûrement un callback. Dans le callback, tu soustrais l'heure finale - l'heure de départ sous forme de secondes. Si le résultat fait moins de 7200 secondes, cela veut dire que l'utilisateur a saisi une heure fausse (suivant la règle que tu veux mettre en place).

Dans ton script, tu mélanges php et js (ce qui rend la lecture bizarre). Cela veut dire tout de même que tu veuilles aussi le traiter en php. Dans ce cas, tu fais la même chose (heure fin - heure départ)

Pour ne pas trop te casser la tête, je pense qu'il faille créer une date du jour avec les heures saisies. Tu converties tout en timestamp et tu fais la soustraction que je t'ai préconisée au dessus. Je pense que ça devrait bien fonctionner.

<<<EDIT
liens annexes :
JS :
- date()
- getTimezoneOffset() (tu vas peut être en avoir besoin. Tout dépend du contexte)
- getTime()
PHP
- mktime()
EDIT;
Modifié par niuxe (26 Jul 2019 - 11:40)
Salut Niuxe et merci pour ta réponse.
Mon principal problème provient du fait qu'aucune donnée n'est saisie lorsque l'utilisateur ne sélectionne pas de date. Pas de problème pour soustraire l'heure actuelle avec l'heure saisie ; par contre, aucune donnée n'est retournée dans Datetimepicker2 lorsqu'aucune heure n'est saisie. Encore merci pour tes pistes de solution.