2009-07-07 4 views
6

Ich benutze die jquery ui datepicker in meiner App. Ich habe einen Inline-Datapicker erstellt. Ich habe ein Problem mit onChangeMonthYear. Ich habe das Beispiel auf das Nötigste vereinfacht.jquery datepicker onChangeMonthYear

Onclick von "zurück" oder "next", der Kalender soll -

  1. Zum vorherigen/nächsten Monat entsprechend.
  2. Legen Sie den ersten Tag des Monats als aktuell ausgewähltes Datum fest.
  3. Warnung, die

Das Problem heute ist mit # 2.

Ich verwende setDate, um dies zu tun, und es endet in unendlicher Rekursion. Denn ich rufe setDate onChangeMonthYear auf. Und setDate feuert intern auch auf ChangeMonthYear.

Wie kann ich diese 3 Dinge erreichen, wenn prev/next geklickt wird?

Antwort

7

Versuchen Setzen eines Flags, die Sie in Ihrem Event-Handler abfragen kann die Endlosschleife zu verhindern:

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

Die unendliche Rekursion bedeutet, dass Sie die falsche Monat zu informieren.
Stellen Sie sicher 1 von month abnehmen

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