2010-12-13 20 views
6

J'utilise le plugin Jquery datepicker avec ce timepicker addon dans deux zones de saisie, une pour la date "De" et la seconde avec la date "À".JQuery datepicker - 2 entrées De et À

Quand je mets le premier, je veux que le second soit un jour après la date sélectionnée dans la première, la désactivation de toutes les dates antérieures à la date sélectionnée dans le champ « From » Date

Si le " Pour «date» est sélectionné en premier, puis la date «De» est définie sur le jour précédant la date «À».

J'ai trouvé quelques exemples, mais je ne sais pas comment la date avec le temps .Donc, Si je, par exemple, sélectionner/12/2010 15h50 dans le " a partir de » date, la date du "a" date est fixée à /12/2010 15:50 ou au moins /12/2010 00:00.

ÉDITÉ ***

Je viens de trouver ce piece of code qui fonctionne comme je veux, mais sans l'addon timepicker.

$(function(){ 

    $('#dateFrom').datepicker({ 
    dateFormat: 'dd/mm/yy', 
    onSelect: function(dateText, inst) { 
     $('#dateTo').datepicker('option','minDate', new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay)); 
      } 
    }); 
    $('#dateTo').datepicker({ 
    dateFormat: 'dd/mm/yy', 
    onSelect: function(dateText, inst) { 
     $('#dateFrom').datepicker('option','maxDate', new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay)); 
    }   
    }); 

}); 

Basé sur le code ci-dessus, serait-il possible de l'adapter, afin que je puisse l'utiliser avec l'addon timepicker?

Merci d'avance

+0

Le problème avec l'utilisation de la méthode 'onSelect' est qu'il ne se comporte pas de la même manière avec le plugin datetimepicker. Notez dans votre démo que vous devez cliquer sur un jour pour fermer le widget. Ce n'est pas le cas avec le datetimepicker, probablement à cause du curseur temporel. Le fait qu'il n'y ait pas d'événement fiable qui se déclenche quand l'utilisateur sélectionne une date (soit clique sur "fait" sur le plugin ou clique sur le widget) rend difficile de le faire de cette façon, au moins avec les recherches que j'ai faites . –

+0

@Andrew: OK J'ai décidé que je ne ferais rien avec ces entrées, mais il y a une autre page où j'ai aussi 2 entrées (FROM et TO), là montrant un simple calendrier est suffisant, mais si j'utilise un ce http://jsbin.com/iyobi je reçois une erreur dans IE. Que devrais-je faire pour faire disparaître cette erreur? – eddy

+0

Je ne vois pas l'erreur sur IE8 ou IE8 en mode IE7 –

Répondre

1

J'en ai la plupart, mais je n'arrivais pas à comprendre comment régler les hourMin et minuteMin après que le widget ait été initialisé. Étant donné le code HTML suivant:

<label for="from">From</label><input id="from" name="from" /> 
<label for="to">To</label><input id="to" name="to" /> 

Et ce JS:

$("#from").datetimepicker(); 
$("#to").datetimepicker({ 
    beforeShow: function(input, inst) { 
     var $toDateInput = $("#to"); 
     var fromDate = $("#from").datetimepicker("getDate"); 
     var toDate = $toDateInput.datetimepicker("getDate"); 
     var afterFromDate; 

     if (fromDate) { 
      if (!toDate || (toDate <= fromDate)) { 
       afterFromDate = new Date(fromDate.toUTCString()); 
       afterFromDate.setDate(afterFromDate.getDate() + 1);    
       $toDateInput.datetimepicker("setDate", afterFromDate); 
      } 
      $toDateInput.datetimepicker("option", "minDate", fromDate); 
     } 
    } 
}); 

Voir ici: http://jsfiddle.net/RWjtL/3/

La plupart de vos critères sont remplis, mais il y a quelques choses qui sont hors:

  • Lorsque vous définissez le champ 'À' vide, la date minimale de l'expéditeur 'De' n'est pas supprimée. J'ai essayé de placer l'option minDate à null et "" et ai obtenu le comportement étrange. Here's a documented issue that could be related.
  • La méthode beforeShow est appelée plusieurs fois. Je pense que c'est à cause de l'appel à setDate à l'intérieur du gestionnaire, mais ne peut pas être sûr.
  • Comme indiqué ci-dessus, je n'ai pas réussi à définir hourMin et minuteMin après coup, et le réglage minDate ne semble pas respecter la partie heure de la date.

La page de l'auteur GitHub page contient une liste de problèmes, dont certains semblent liés aux problèmes rencontrés. J'espère que vous avez commencé au moins.