jquery UI – Ajout de date à la date sélectionnée

Cela semble simple, mais je suis incapable de le résoudre et j’en ai vraiment besoin. Comment puis-je append une date à une date sélectionnée, via l’événement SelectedDate?

Je dois effectuer une limite de plage de dates sur 2 datepickers. Une fois que l’utilisateur a défini un sélecteur de date, l’autre doit autoriser uniquement la date égale à la date sélectionnée du premier sélecteur de date, plus un mois.

Exemple: si je mets le ‘3 mars’ sur le premier calendrier, le second doit n’autoriser que les dates supérieures à ‘3 avril’.

Jusqu’à présent, je ne peux obtenir que la même date sélectionnée ou celle définie par $('#dtpicker').datepicker( "setDate" , '+1m'); . J’ai essayé l’exemple de documentation jquery-ui, mais rien.

J’ai mis en œuvre une fonctionnalité similaire sur deux datepickers.

 function handleDateChange() { var dateStart = $('#datepicker-startdate').datepicker("getDate"), dateEnd = $('#datepicker-enddate').datepicker("getDate"); if (dateStart !== null) { dateStart.setDate(dateStart.getDate() + 1); $('#datepicker-enddate').datepicker('option', 'minDate', dateStart); } if (dateEnd !== null) { dateEnd.setDate(dateEnd.getDate() - 1); $('#datepicker-enddate').datepicker('option', 'maxDate', dateEnd); } } 

Utilisez cette méthode dans le gestionnaire onSelect de vos datepickers (en tant qu’option init):

 $(/*your datepicker selector*/).datepicker({ // ... other init options onSelect : function(dateText, inst) {handleDateChange();} }); 

Je pense que cela ressemble à ce dont vous avez besoin, sinon vous devriez absolument vous mettre sur la bonne voie.

Cela devrait faire l’affaire pour vous:

 var plus_one_month = ''; var minus_one_month = ''; $("#from").datepicker({ beforeShow: function() { if($("#to").val() != '') { minus_one_month = new Date($("#to").val()); minus_one_month.setMonth(minus_one_month.getMonth() - 1); } else { minus_one_month = ''; } return { minDate: minus_one_month, maxDate: new Date($("#to").val()) } } }); $("#to").datepicker({ beforeShow: function() { if($("#from").val() != '') { plus_one_month = new Date($("#from").val()); plus_one_month.setMonth(plus_one_month.getMonth() + 1); } else { plus_one_month = ''; } return { minDate: new Date($("#from").val()), maxDate: plus_one_month } } }); 

Comme vous pouvez le voir ici .