2009-07-07 18 views
6

Używam jquery ui datepicker w mojej aplikacji. Utworzono wbudowany datepicker. Mam problem z onChangeMonthYear. Uprościłem przykład do absolutnego minimum.datepicker jquery onChangeMonthYear

OnClick "prev" lub "Dalej", kalendarz powinien: -

  1. przejść do poprzedniego/następnego miesiąca odpowiednio.
  2. Ustaw pierwszy dzień tego miesiąca jako bieżącą wybraną datę.
  3. alert tej dacie

problem jest z # 2.

Do tego celu używam setDate, a kończy się to nieskończoną rekurencją. Ponieważ wywołuję setDate wewnątrz naChangeMonthYear. A setDate również inicjuje wewnętrznie naChangeMonthYear.

Jak mogę uzyskać te 3 rzeczy, gdy kliknięto przycisk Poprzedni/Następny.

Odpowiedz

7

Spróbuj ustawić flagę, że można kwerendy w Twojej obsługi zdarzeń, aby zapobiec nieskończonej pętli:

var changingDate = false; 
$('.selector').datepicker({ 
    onChangeMonthYear: function(year, month, inst) { 
     if (changingDate) { 
      return; 
     } 
     changingDate = true; 
     // your setDate() call here 
     changingDate = false; 
    } 
}); 
1

Nieskończona rekurencji oznacza, że ​​są informując nieprawidłowe miesięcy.
Upewnij się, że zmniejszasz 1 z month

0
onChangeMonthYear: function(year, month, inst){ 
    $(this).datepicker("setDate", new Date(year, month-1, 1)); 
}