2011-08-30 6 views
0

J'ai regardé quelques questions sur ici et en ligne mais je ne peux pas sembler trouver la réponse que je cherche ou peut-être juste je ne peux pas l'implémenter correctement. J'ai 2 datepickers ... une date d'arrivée et une date de départ. La date de départ doit toujours être dans les 30 jours de la date d'arrivée. J'ai réussi à utiliser le code ci-dessous pour obtenir ce résultat mais c'est sur un onSelect donc il dosent travail lorsque la page est chargée, seulement quand vous sélectionnez une date d'arrivée. Par défaut, la date d'arrivée est aujourd'hui, par conséquent, la sortie ne doit être sélectionnable que jusqu'à 30 jours à compter du chargement de la page. Toute aide serait appréciée.jquery datepicker

var today = new Date(); 
today.setHours(0,0,0,0); 
$(function(){$("#datepicker, #departure").datepicker({ 
    defaultDate: +1, 
    minDate: 0, 
    maxDate: '+12m', 
    dateFormat: 'dd/mm/yy', 
    numberOfMonths: 3, 
    showOn: 'both', 
    buttonImageOnly: true, 
    buttonImage: 'http://images.aboutrooms.com/hotels/graphics/calendar.gif', 
    //beforeShowDay: function(date){return [date.getTime() != today.getTime(), ''];} 
    onSelect: function(selectedDate) { 
     if(this.id == 'datepicker'){ 
      var dateMin = $('#datepicker').datepicker("getDate"); 
      var rMin = new Date(dateMin.getFullYear(), dateMin.getMonth(),dateMin.getDate() + 1); // Min Date = Selected + 1d 
      var rMax = new Date(dateMin.getFullYear(), dateMin.getMonth(),dateMin.getDate() + 31); // Max Date = Selected + 31d 
      $('#departure').datepicker("option","minDate",rMin); 
      $('#departure').datepicker("option","maxDate",rMax);      
     } 

    } 
     }); 
}); 

Répondre

0

le faire comme ceci:

  • mouvement qui onSelect fonction à la fonction externe
  • appel marque sur quand $(document).ready();
  • point de lui de onSelect dans l'objet de configuration datepicker

fn:

function datepickerhandle(selectedDate) { 
     if(this.id == 'datepicker'){ 
      var dateMin = $('#datepicker').datepicker("getDate"); 
      var rMin = new Date(dateMin.getFullYear(), dateMin.getMonth(),dateMin.getDate() + 1); // Min Date = Selected + 1d 
      var rMax = new Date(dateMin.getFullYear(), dateMin.getMonth(),dateMin.getDate() + 31); // Max Date = Selected + 31d 
      $('#departure').datepicker("option","minDate",rMin); 
      $('#departure').datepicker("option","maxDate",rMax);      
     } 

    } 

onSelect:

onSelect: datepickerhandle, 

onLoad:

$(document).ready(function(){ datepickerhandle([selected time]); }); 

pour obtenir sélectionné, voir cette question SO: jQuery DatePicker: Get Selected Date


variante non. 2

jQuery datepicker set selected date, on the fly

lorsque les charges de documents, définissez la date de datepicker par exemple à la volée à feu événement onSelected

+0

Merci pour la réponse. juste avoir des problèmes avec l'appel. Je suppose que c'est à faire avec le temps choisi mais je ne comprends pas le calme. Si je fais simplement datepickerhandle(); ça marche comme je l'avais initialement. Toute chance que vous pouvez m'aider avec l'heure choisie. – Hatzi

+0

utiliser un champ alternatif, qui peut être caché http://jqueryui.com/demos/datepicker/#alt-field –

0

simplement mettre à jour le terrain avec la fin de cette

initialisation du sélecteur de date comme
$('.date-pick').datePicker().val(new Date()).trigger('change')