2010-01-25 4 views
3

Vraiment comme datepicker. Merci beaucoup pour cette super bibliothèque!comment faire pour rafraîchir datepicker? function .datePickerMultiMonth()

J'ai une question pour vous basé dans cet exemple (datepicker en ligne):

http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/datePickerMultiMonth5.html

J'ai ajouté une fonction « renderCallback » pour désactiver les jours de semaine en fonction des cases à cocher ... (par exemple, lorsque samedi -checkbox est cochée désactiver tous les samedis montrés).

Cela fonctionne parfaitement lors de l'initialisation du calendrier avec datePickerMultiMonth(). Mais comment puis-je actualiser le calendrier inline lorsque l'une des cases à cocher est modifiée (par exemple, désélectionner lundi case à cocher)?

Telle quelle: lorsque je sélectionne/désélectionne une case à cocher, l'outil datepicker reste inchangé .. seulement après un changement manuel au mois suivant, il est mis à jour et désactivé par ex. tous les lundis ... cela devrait se produire immédiatement en changeant la case lundi.

Avez-vous une idée de comment je peux actualiser le datpicket? Merci beaucoup pour votre aide!

Cheers, Markus

Répondre

1

Après avoir un peu d'un coup d'œil à la source, il semble que vous aurez à faire quelque chose comme ceci:

$.event._dpCache[$('.date-pick')[0]._dpId]._applyRenderCallbacks() 

ou peut-être ceci:

$.event._dpCache[$('.date-pick')[0]._dpId]._rerenderCalendar() 

La partie $.event._dpCache[$('.date-pick')[0]._dpId] est utilisée pour obtenir le premier objet interne DatePicker correspondant au css '.date-pick', qui est nécessaire pour accéder au e fonctions internes _applyRenderCallbacks et _rerenderCalendar. Malheureusement, cela n'accède pas à la structure interne du plugin, il est donc possible qu'il se brise lorsque de nouvelles versions sont publiées, mais je n'ai trouvé aucun moyen accessible au public d'actualiser le calendrier.

+1

beau travail de détective et une bonne solution pour le manque d'accès du public à la méthode appropriée du plug-in ... Cela aurait été la meilleure solution au moment où la question a été répondue. Je viens de mettre à jour le plugin pour que la méthode rerender soit disponible publiquement ce qui rend la solution plus facile à maintenir ... – vitch

2

Probablement le moyen le plus simple de résoudre le problème est de supprimer le calendrier existant, puis de le rediffuser. .: par exemple

$mm.empty().datePickerMultiMonth({}); 

Cependant, cela a des inconvénients que l'état de votre sélecteur de date n'est pas maintenue (par exemple affiché mois, les dates sélectionnées, etc.).

Donc je viens d'apporter quelques modifications au plugin et j'ai introduit une nouvelle méthode: dpmmRerenderCalendar sur le sélecteur multimonth (et le dpRerenderCalendar correspondant sur le sélecteur de date lui-même).

Vous pouvez voir un exemple de celui-ci en action ici:

http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/datePickerMultiMonth7.html

Et pouvez saisir le dernier code plug-in de mon site ou le dépôt de googlecode.