2009-07-07 29 views
6

Estoy usando el jquery ui datepicker en mi aplicación. He creado un datepicker en línea. Tengo un problema con onChangeMonthYear. He simplificado el ejemplo al mínimo.jquery datepicker onChangeMonthYear

Onclick de "anterior" o "siguiente", el calendario debe: -

  1. Ir a la anterior/mes siguiente en consecuencia.
  2. Establezca el primer día de ese mes como la fecha seleccionada actualmente.
  3. alerta que datan

El problema es con # 2.

Estoy usando setDate para hacer eso, y está terminando en recursión infinita. Porque, estoy llamando setDate dentro de ChangeMonthYear. Y setDate también se activa elChangeMonthYear internamente.

¿Cómo puedo lograr esas 3 cosas cuando se hace clic en prev/next.

Respuesta

7

intente configurar una bandera que se puede consultar en el controlador de eventos para evitar que el bucle infinito:

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

La recursividad infinita significa que está informando al mes incorrecto.
Asegúrese de que están disminuyendo 1 de month

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