0

J'utilise jQuery timepicker et jQuery datepair pour configurer une page de création de rendez-vous. Je veux limiter la durée totale du rendez-vous à 3 heures ou peu importe. J'ai du mal à comprendre comment appliquer cela.jQuery timepicker et jQuery datepair: définition d'une durée maximale (delta)

html:

<div id="dateTimePicker"> 
    <input type="text" class="date start"/> 
    <input type="text" class="time start"/> to 
    <input type="text" class="time end" id="timeEnd"/> 
    <input type="text" class="date end"/> 
</div> 

js:

$('#dateTimePicker .time').timepicker({ 
     'minTime': '6:00am', 
     'maxTime': '11:00pm', 
     'step': 15, 
     'showDuration': true, 
     'timeFormat': 'g:ia' 
    }).on('changeTime', function (e) { 
     var milliseconds = datepair.getTimeDiff(); 
     // is the time more than 3 hours? 
     if (milliseconds > 10800000) { 
      console.log('time too big') 
      $('#dateTimePicker').timepicker('setTime', '10:15am'); 
     } 
    }); 

Je pensais que je pouvais vérifier l'événement ChangeTime, mais qui se déclenche un clic après il arrive. par exemple. si je change le temps pour avoir un delta de 4 heures, l'évènement ne sera pas appelé tant que je ne le changerai pas de nouveau dans la gamme que je cherche.

Même après cela, je ne sais toujours pas comment régler l'heure de fin. Dans la documentation de jQuery timepicker, il est dit que vous pouvez utiliser 'setTime', mais il n'est pas clair de savoir quoi faire quand une datepair est utilisée.

Je veux juste faire respecter une durée maximale de l'intervalle de temps et je ne sais pas comment

jsFiddle: https://jsfiddle.net/vmjo1aw6/2/

Répondre

2

Je pense que blur est l'événement que vous cherchez, par exemple, changer

.on('changeTime', function (e) 

à

.on('blur', function (e) 
+0

cet événement ne résout les problèmes que j'avais avec changeTime étant un retard. Je ne suis toujours pas sûr de savoir comment changer correctement l'heure de fin si –

+1

Oh, je suis désolé, je n'ai pas remarqué l'autre question. Quoi qu'il en soit, cela dépend de ce que vous voulez lorsque l'utilisateur dépasse la limite de temps. Une solution que j'aime est que lorsque l'utilisateur se concentre sur l'heure de fin (événement 'focus'), enregistrez la valeur d'origine qui était là. Une fois la limite de 3 heures dépassée, revenez à l'heure d'origine qui y était écrite (et valide). Regardez ici: https://jsfiddle.net/vmjo1aw6/4/ – Catalyst