JQuery datepicker minDate variable

Je suis le jumelé de date jQuery. Dans ma boîte de dialogue "EndDate", j'aimerais utiliser la date sélectionnée dans la zone de texte "StartDate" + 1. Comment puis-je faire cela?

J'ai essayé cela mais je n'ai pas travaillé. Dans mon code de date de début, j'avais …

test = $(this).datepicker('getDate'); testm = new Date(test.getTime()); testm.setDate(testm.getDate() + 1); 

Ensuite, dans mon code de date de fin j'avais …

 minDate: testm, 

Mais la date de fin est encore effectuée tous les jours pour le mois disponible.


Modifier. Je suis curieux de savoir pourquoi cela ne fonctionne pas. À ma date de début, datepicker, j'ai ce …

 onSelect: function (dateText, inst) { test = dateText } 

Pourquoi ne puis-je pas entrer dans mes dates de fin de date et dire, minDate: test ?


Modifier. Ne fonctionne toujours pas

  $(".dateStartDatePickerBox").datepicker({ minDate:'-0d', onSelect: function(dateText, inst) { test = $(this).datepicker('getDate'); testm = new Date(test.getTime()); testm.setDate(testm.getDate() + 1); $("#dateEndDatePickerBox").datepicker("option", "minDate", testm); } }); $(".dateEndDatePickerBox").datepicker({ onSelect: function() { } }); 

Vous devrez configurer dynamiquement la date min pour l'événement de changement de la date de début.

Quelque chose comme:

 $("#startDate").change(function() { test = $(this).datepicker('getDate'); testm = new Date(test.getTime()); testm.setDate(testm.getDate() + 1); $("#endDate").datepicker("option", "minDate", testm); }); 

Répondez à l'édition:

Vous ne pouvez pas faire ce qui suit:

 var test; $("#myinput").datepicker({ onSelect: function() { test = $(this).datepicker("getdate"); } }); $("#myotherinput").datepicker({ minDate: test }); 

Le test n'est pas initialisé au moment où MinDate est configuré sur myotherinput . Le processus de configuration de minDate nécessite sans doute la manipulation DOM que datepicker gère lors de l'initialisation ou lorsque l'option "option" est appelée. La simple modification de la variable utilisée pour l'initialisation n'affecte pas le codeur de date déjà initialisé.

Parlez-vous de définir une date de sélection maximale?

 StartDate = new Date("March 20, 2010"); EndDate = new Date("March 21, 2010"); $("#datepicker").datepicker({ minDate: StartDate, maxDate: EndDate, defaultDate: StartDate }); 

Notez le maxDate? Cela ne vous permettra pas de choisir un jour passé …

La documentation de l'API pour le sélecteur de date semble dire qu'il devrait prendre un objet Date, mais j'ai eu ce problème exact dans le passé et c'est ainsi que je l'ai résolu.

Passez minDate un décalage , au lieu d'une date. Vous aurez besoin d'une fonction pour prendre votre date de début, en ajouter une, puis obtenir le décalage dès aujourd'hui. Ainsi, vous pourriez avoir une fonction comme:

 function offsetFromToday( someDate ) { // clear time offset because we only want to take date into account someDate.setHours( 0 ); someDate.setMinutes( 0 ); // The number of milliseconds in one day var ONE_DAY = 1000 * 60 * 60 * 24; // Convert both dates to milliseconds someDate = someDate.getTime(); var today = new Date().getTime(); // Calculate the difference in milliseconds var difference = Math.abs( someDate - today ); // Convert back to days and return return Math.floor( (difference / ONE_DAY) + 1 ); } 

Donc, il vous suffit d'avoir votre date de début un jour à l'avance: StartDate.setDate( StartDate.getDate() + 1 ) ou similaire, puis passez-le à cette fonction pour obtenir un décalage, puis donnez -le à minDate .