2010-12-13 8 views
6

Używam wtyczki Datepicker Jquery z tym timepicker addon w dwóch polach wejściowych, jeden dla daty "Od", a drugi z datą "Do".Datepicker JQuery - 2 wejścia Od i Do

Kiedy ustawić pierwszy, chcę drugi za jeden dzień po wybranej w pierwszym terminie, wyłączając wszystkie daty wcześniej niż wybrany w terminie „Od” daty

Jeśli " Aby "data została wybrana jako pierwsza, data" Od "jest ustawiona na dzień przed datą" Do ".

Znalazłem kilka przykładów, ale nie wiem, jak uzyskać datę z czasem .Tak, jeśli mogę, na przykład, wybrać /12/2010 15:50 w " z”datą, data w polu "do" data jest ustawiona na /12/2010 15:50 lub przynajmniej /12/2010 00:00.

EDYCJI ***

Właśnie uznał ten piece of code, który działa jak chcę, ale bez dodatku 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)); 
    }   
    }); 

}); 

Na podstawie powyższego kodu, byłoby możliwe, aby ją dostosować, tak, że można go używać z dodatku timepicker?

Dzięki wcześniej

+0

Problem z użyciem metody 'onSelect' polega na tym, że nie zachowuje się tak samo z wtyczką datetimepicker. Zwróć uwagę, że musisz kliknąć dzień, aby zamknąć widżet. Nie dotyczy to datetimepicker, prawdopodobnie z powodu suwaka na czas. Fakt, że nie ma żadnego wiarygodnego zdarzenia, które zostanie wywołane, gdy użytkownik wybierze datę (kliknięcie "zrobione" na wtyczce lub kliknięcie widżetu) sprawia, że ​​ciężko jest to zrobić w ten sposób, przynajmniej z badaniami, które zrobiłem . –

+0

@Andrew: OK, zdecydowałem, że nie zamierzam nic robić z tymi wejściami, ale jest jeszcze jedna strona, na której mam również 2 wejścia (FROM i TO), tam wystarczy prosty kalendarz, ale jeśli używam to http://jsbin.com/iyobi Dostaję błąd w IE. Co mam zrobić, aby ten błąd zniknął? – eddy

+0

Nie widzę błędu na IE8 lub IE8 w trybie IE7 –

Odpowiedz

1

Mam większość, ale nie mogłem wymyślić, jak ustawić hourMin i minuteMin po tym, jak widget został już zainicjowany. Biorąc pod uwagę następujące HTML:

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

I 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); 
     } 
    } 
}); 

Zobacz tutaj: http://jsfiddle.net/RWjtL/3/

Większość Twoich kryteriów są spełnione, ale istnieje kilka rzeczy, które są wyłączone:

  • Po ustawieniu pola "Do" na pustą datę min. Datepicker "Od" nie zostanie usunięty. Próbowałem ustawić opcję minDate na null i "" i otrzymałem dziwne zachowanie. Here's a documented issue that could be related.
  • Metoda beforeShow jest wywoływana wiele razy. Myślę, że dzieje się tak z powodu połączenia z setDate wewnątrz handler'a, ale nie jestem tego pewien.
  • Jak wspomniano powyżej, nie udało mi się ustawić hourMin i minuteMin po fakcie, a ustawienie minDate nie wydaje się respektować części czasu w czasie.

Autor ma GitHub page ma listę problemów, z których niektóre wydają się być związane z problemami, które napotkałem. Mam nadzieję, że przynajmniej zaczniesz.