2010-02-22 14 views
7

Chcę wyróżnić kilka dni w bieżącym miesiącu. Mogę to zrobić w pierwszym miesiącu, ale nie w nowym miesiącu po kliknięciu "następny miesiąc" lub "poprzedni miesiąc". Próbowałem używać zdarzenia onChangeMonthYear, ale jest ono wykonywane przed renderowaniem nowego (lub poprzedniego) miesiąca.Wyzwalacz Jquery Datepicker po zmianie miesiąca (po renderowaniu miesiąca)

jakieś pomysły?

+0

To jeden z największych problemów z programistami wtyczek jQuery - jeszcze nie widziałem, w którym wyzwalają zdarzenia niestandardowe, więc ludzie tacy jak ty i ja możemy uzyskać niestandardową funkcjonalność. –

+0

@Peter Każde niestandardowe zdarzenie używane w jQuery UI jest szczegółowo udokumentowane w witrynie jQuery UI. –

+0

@Alex, tęsknisz za moim punktem. Wtyczki powinny uruchamiać własne zdarzenia, aby skrypty macierzyste mogły je przechwycić i podjąć działanie. Coś w rodzaju '$ (this) .trigger ('ui-datepicker: after-month-loaded')' pozwoliłoby użytkownikowi user278860 zrobić to, o co prosił - po prostu musiałby dodać '$ .bind()' –

Odpowiedz

1

Możesz to zrobić z moim jQuery datepicker używając niestandardowego "renderCallback".

np. This example wyłącza weekendy i dodaje klasę do stylizacji tych dni. Istnieje wiele innych, bardziej complex examples które mogą pomóc też ...

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

Ponadto, jeśli wolisz, jest wydarzeniem dpMonthChanged raz kalendarz został ponownie renderowane i można pętli nad zawartością kalendarza i podświetl ...

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) 
    } 
Powiązane problemy