2010-02-22 3 views
7

Desidero evidenziare alcuni giorni nel mese corrente. Posso farlo nel primo mese, ma non in un nuovo mese dopo aver cliccato "mese prossimo" o "mese precedente". Ho provato a utilizzare l'evento onChangeMonthYear ma questo viene eseguito prima dei rendering del mese nuovo (o precedente).Attivatore Jquery Datepicker dopo aver modificato il mese (dopo i rendering del mese)

qualche idea?

+0

Questo è il mio unico, singolo più grande cruccio con gli sviluppatori di plugin per jQuery - devo ancora vedere uno in cui essi innescare eventi personalizzati così la gente come te e posso ottenere alcune funzionalità personalizzate. –

+0

@Peter Ogni evento personalizzato utilizzato nell'interfaccia utente jQuery è documentato in dettaglio sul sito dell'interfaccia utente jQuery. –

+0

@ Alex, hai perso il mio punto. I plug-in dovrebbero attivare i propri eventi in modo che gli script padre possano catturarli e agire. Qualcosa come '$ (this) .trigger ('ui-datepicker: after-month-loaded')' permetterebbe a user278860 di fare quello che sta chiedendo - ha solo bisogno di aggiungere un '$ .bind()' –

risposta

1

È possibile farlo con il mio jQuery datepicker utilizzando un "renderCallback" personalizzato.

ad es. This example disabilita i fine settimana e aggiunge una classe per lo styling di quei giorni. Ci sono un sacco di altri più complex examples che potrebbero aiutare anche ...

$('.date-pick') 
    .datePicker(
     { 
      renderCallback:function($td, thisDate, month, year) 
      { 
       if (thisDate.isWeekend()) { 
        $td.addClass('weekend'); 
        $td.addClass('disabled'); 
       } 
      } 
     } 
    ); 

Inoltre, se si preferisce, c'è un evento dpMonthChanged una volta che il calendario ha ri-renderizzati e si può ciclo sui contenuti del calendario e fare la vostra evidenziazione ...

0
 hack: 
     $('#calendar').datepicker({ 
            onChangeMonthYear: function (year, month, inst) { 
             setEventsDay() 
            } 
           }); 
function setEventsDay(){ 
    var days = $(".ui-state-default"); 
        console.log(days.length); //31 from august to Sep 
     setTimeout(function() { 
        var days = $(".ui-state-default"); 
        console.log(days.length);  //30 `enter code here`from august to Sep 

       }, 100) 
    }