web-dev-qa-db-fra.com

comment ajouter un jour à une date en utilisant jquery datepicker

J'ai 2 zones de texte sur mon site pour la date de retrait et la date de retour à la fois en utilisant le sélecteur de date jquery.

J'ai du mal à définir la valeur de la date de restitution avec un jour d'avance sur la date de retrait sélectionnée.

Voici ce que j'ai:

$('.pickupDate').change(function() {
    var date2 = $('.pickupDate').datepicker('getDate', '+1d'); 
    $('.dropoffDate').datepicker('setDate', date2);
});

Ce qui précède s'exécutera mais la valeur dans la zone de texte de dépôt correspondra à la valeur de ramassage au lieu d'être un jour à l'avance. par exemple: si je sélectionne 01-01-2010, le code ci-dessus renvoie 01-01-2010 dans la liste déroulante au lieu de 02-01-2010.

Des pensées?

Merci pour votre aide, Rich

25
Richard Reddy

Essaye ça:

 $('.pickupDate').change(function() {
  var date2 = $('.pickupDate').datepicker('getDate', '+1d'); 
  date2.setDate(date2.getDate()+1); 
  $('.dropoffDate').datepicker('setDate', date2);
});
67
Vincent Ramdhanie

Cette réponse m'a vraiment aidé à démarrer (noob) - mais j'ai rencontré un comportement étrange lorsque j'ai défini une date de début du 31/12/2014 et ajouté +1 à la date de fin par défaut. Au lieu de me donner une date de fin du 01/01/2015, je recevais le 02/01/2015 (!!!). Cette version analyse les composants de la date de début pour éviter ces bizarreries de fin d'année.


 $( "#date_start" ).datepicker({

   minDate: 0,
   dateFormat: "mm/dd/yy",

   onSelect: function(selected) {
         $("#date_end").datepicker("option","minDate", selected); //  mindate on the End datepicker cannot be less than start date already selected.
         var date = $(this).datepicker('getDate');
         var tempStartDate = new Date(date);
         var default_end = new Date(tempStartDate.getFullYear(), tempStartDate.getMonth(), tempStartDate.getDate()+1); //this parses date to overcome new year date weirdness
         $('#date_end').datepicker('setDate', default_end); // Set as default                           
   }

 });

 $( "#date_end" ).datepicker({

   minDate: 0,
   dateFormat: "mm/dd/yy",

   onSelect: function(selected) {
     $("#date_start").datepicker("option","maxDate", selected); //  maxdate on the Start datepicker cannot be more than end date selected.

  }

});
8
selu220

Le sélecteur de date ('setDate') définit la date dans le sélecteur de date et non dans l'entrée.

Vous devez ajouter la date et la définir dans l'entrée.

var date2 = $('.pickupDate').datepicker('getDate');
var nextDayDate = new Date();
nextDayDate.setDate(date2.getDate() + 1);
$('input').val(nextDayDate);
4
Daniel Moura