2009-07-07 11 views
6

J'utilise jquery ui datepicker dans mon application. J'ai créé un sélecteur de date en ligne. J'ai un problème avec onChangeMonthYear. J'ai simplifié l'exemple au strict minimum.jquery datepicker onChangeMonthYear

onclick "prev" ou "suivant", le calendrier devrait: -

  1. Aller au mois précédent/suivant en conséquence.
  2. Définissez le premier jour de ce mois comme la date actuellement sélectionnée.
  3. alerte qui date

Le problème est aveC# 2. J'utilise setDate pour ce faire, et il se termine par une récursion infinie. Parce que j'appelle setDate dans onChangeMonthYear. Et setDate déclenche également onChangeMonthYear en interne.

Comment puis-je réaliser ces 3 choses lorsque je clique sur prev/next?

Répondre

7

Essayez le réglage d'un drapeau que vous pouvez interroger dans votre gestionnaire d'événements pour empêcher la boucle infinie:

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

La récursion infinie signifie que vous informer le mois incorrect.
Assurez-vous que vous decreasing 1 de month

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