2010-02-22 2 views
7

Я хочу выделить несколько дней в текущем месяце. Я могу сделать это в первый месяц, но не в новый месяц после нажатия на «следующий месяц» или «предыдущий месяц». Я попытался использовать событие onChangeMonthYear, но это выполняется до того, как появится новый (или предыдущий) месяц.JQuery Datepicker триггер после изменения месяца (после месяца снимает)

любые идеи?

+0

Это моя единственная самая большая проблема с разработчиками плагинов jQuery. Мне еще нужно увидеть, где они запускают пользовательские события, чтобы люди вроде вас и я могли получить некоторые пользовательские функции. –

+0

@Peter Каждое пользовательское событие, используемое в пользовательском интерфейсе jQuery, подробно описано на сайте пользовательского интерфейса jQuery. –

+0

@Alex, вы скучаете по моей точке. Плагины должны запускать собственные события, чтобы родительские скрипты могли их поймать и принять меры. Что-то вроде '$ (this) .trigger ('ui-datepicker: after-month-loaded')' позволит user278860 делать то, о чем он просит, - ему просто нужно добавить '$ .bind()' –

ответ

1

Возможно, вашим лучшим выбором будет обратный вызов beforeShowDay.

http://jqueryui.com/demos/datepicker/#event-beforeShowDay

Вы можете указать новое имя класса для ячейки, основываясь на любые ваши критерии дата.

1

Вы можете сделать это с помощью моего jQuery datepicker с помощью пользовательского «renderCallback».

например. This example отключает выходные и добавляет класс для стилизации в эти дни. Есть много других, более complex examples, которые могли бы помочь тоже ...

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

Кроме того, если вы предпочитаете, есть dpMonthChanged события после того, как календарь вновь оказанное, и вы можете перебирает содержимое календаря и сделайте свою подсветку ...

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) 
    }