2009-10-06 12 views

Répondre

0

Jetez un oeil à ma réponse ici - JQuery datepicker- 2 inputs/textboxes and restricting range

Une façon de le faire serait d'utiliser la propriété beforeShow pour limiter la valeur dans la seconde datepicker. Vous pouvez également définir un gestionnaire onSelect qui met à jour la deuxième entrée lorsqu'une date est choisie dans la première.

Working DemoNote: ceci est basé sur la jQuery DatePicker et non Keith Woods'.

EDIT:

Comme indiqué sur la datepick plugin page -

Ce plugin est la base pour la jQuery UI Datepicker. Il est fait disponible en tant que plugin séparé depuis l'équipe de l'interface utilisateur a souhaité la fonctionnalité simplifiée pour leur version.

ainsi le code basé sur la Datepicker jQuery UI travaillera avec le datepicker de Keith.

code de démonstration

$(function() 
{ 

    $('#txtStartDate, #txtEndDate').datepicker(
    { 
     showOn: "both", 
     dateFormat: "dd M yy", 
     onSelect: insertOtherDate, 
     firstDay: 1, 
     changeFirstDay: false 
    }); 
}); 

function insertOtherDate(value, date, inst) { 

    var firstDate = new Date(value); 
    var datepickerInput = (date.id === 'txtStartDate') ? 'txtEndDate' : 'txtStartDate'; 
    var dateAdjust = (date.id === 'txtStartDate') ? 1 : -1; 
    var secondDate = new Date(firstDate.getFullYear(), firstDate.getMonth(), firstDate.getDate() + dateAdjust); 

    $('#' + datepickerInput).datepicker('setDate', secondDate); 
} 
+0

La plage entre startDate et endDate ne peut pas être toujours 1. Cause startDate et endDate ont minDate et maxDate. Lorsque la valeur endDate est sélectionnée, startDate ne peut pas passer à "endDate - 1" et la valeur startDate peut être la même que précédemment. Quand le startDate sélectionné, le endDate devrait changer à "the startDate + 1", alors comment faire Merci beaucoup – Jason

+0

Si je vous ai bien compris, endDate devrait être 1 jour de plus que startDate mais ne devrait pas dépasser le maxDate défini pour endDate. De même, startDate doit être inférieur d'un jour à endDate, mais pas plus tôt que minDate défini pour startDate. Est-ce exact? Si ce n'est pas le cas, vous devez préciser la plage entre startDate et endDate. –

+0

Que se passe-t-il quand un endDate est choisi avant un startDate? –

1

Définir un gestionnaire onSelect qui met à jour le deuxième champ avec une date qui est un plus tard que celle choisie pour le premier champ.

0

Créez un événement onSelect à partir de l'outil datepicker. Dans le rappel, lisez la valeur, convertissez la date en UNIX TIMESTAMP (vous pouvez utiliser $ .datepick.TIMESTAMP), ajoutez 24 * 60 * 60000 et configurez la seconde entrée en conséquence.

+0

cela entrerait-il la date avec le même formatage personnalisé utilisé dans le premier datepicker? –