2010-12-13 10 views
6

Ich benutze das Jquery Datepicker Plugin mit diesem timepicker addon in zwei Eingabefelder, eines für das "Von" Datum und das zweite mit dem "Bis" Datum.JQuery Datepicker- 2 Eingänge von und nach

Als ich das erste Set, möchte ich die zweite einen Tag nach dem Zeitpunkt in dem ersten ausgewählten sein, deaktivieren Sie alle Termine früher als die in der „Von“ Datum gewählte Datum

Wenn die " Wenn "Datum" zuerst ausgewählt wird, wird das Datum "Von" auf den Tag vor dem Datum "Bis" gesetzt.

Ich habe einige Beispiele gefunden, aber ich weiß nicht, wie .So, das Datum mit der Zeit zu bekommen, wenn ich zum Beispiel wählt /12/2010 15:50 im " von“Datum, das Datum in dem "auf" Datum auf /12/2010 15:50 oder zumindest zu /12/2010 00:00.

EDITED ***

Ich habe gerade dieses piece of code, das funktioniert, wie ich will, aber ohne die Timepicker Addon.

$(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)); 
    }   
    }); 

}); 

auf der obigen Code-Basis, wäre es möglich, sie anzupassen, so dass ich es mit dem Timepicker Addon benutzen kann?

Dank im voraus

+0

Das Problem mit der 'onSelect' Methode ist, dass sie sich nicht mit dem datetimepicker Plugin verhält. Beachten Sie in Ihrer Demo, dass Sie auf einen Tag klicken müssen, um das Widget zu schließen. Dies ist bei datetimepicker nicht der Fall, wahrscheinlich wegen des Schiebereglers für die Zeit. Die Tatsache, dass es kein zuverlässiges Ereignis gibt, das ausgelöst wird, wenn der Benutzer ein Datum auswählt (entweder "Fertig" auf dem Plugin oder Klicks auf das Widget), macht es auf diese Weise schwierig, zumindest mit den Recherchen, die ich gemacht habe . –

+0

@Andrew: OK Ich habe mich entschlossen, nichts mit diesen Eingängen zu tun, aber es gibt eine andere Seite, auf der ich auch 2 Eingänge habe (FROM und TO), da reicht ein einfacher Kalender, aber wenn ich a http://jsbin.com/iyobi Ich bekomme einen Fehler in IE. Was soll ich machen um diesen Fehler verschwinden zu lassen? – eddy

+0

Ich sehe den Fehler auf IE8 oder IE8 im IE7-Modus nicht –

Antwort

1

Ich habe das meiste davon, aber konnte nicht herausfinden, wie die hourMin und minuteMin nach dem Widget bereits initialisiert wurde. In Anbetracht der folgenden HTML:

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

Und das 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); 
     } 
    } 
}); 

es Siehe hier: http://jsfiddle.net/RWjtL/3/

Die meisten Ihrer Kriterien erfüllt sind, aber es gibt ein paar Dinge, die ausgeschaltet sind:

  • Wenn Sie das Feld 'An' leer lassen, wird das Mindestdatum von 'Datum' nicht entfernt. Ich habe versucht, die minDate Option auf null und "" einzustellen und bekam seltsames Verhalten. Here's a documented issue that could be related.
  • Die Methode beforeShow wird mehrmals aufgerufen. Ich denke, das liegt an dem Anruf bei setDate im Handler, kann aber nicht sicher sein.
  • Wie oben erwähnt, konnte ich nicht hourMin und minuteMin nach der Tatsache zu setzen, und die Einstellung der minDate scheint nicht die Zeit Teil des Datums zu respektieren.
  • Die GitHub page des Autors hat eine Liste von Problemen, von denen einige auf die Probleme bezogen scheinen, denen ich begegnete. Hoffe, dass du wenigstens angefangen hast.