datepicker中的替代日期

时间:2017-03-21 06:16:30

标签: jquery date jquery-ui datepicker

我在星期六的星期六试着addClass。我尝试了2种方法,但都没有正常工作。

#1
我为每个:odd添加了tr Demo Fiddle

$('.ui-datepicker-calendar tr:odd').each(function(){
   $(this).addClass('odd');
});

但是,如果看到四月的蛾子结束并且开始五月不是奇怪的状态。

#2
我在小提琴的某个地方得到了一个奇怪的黑客。 Demo Fiddle

$('td.ui-datepicker-week-end .ui-state-default').each(function(i, el) {
   if (i % 2 === 0) { 
    $(this).addClass('sat');
   }
   else { 
    $(this).addClass('sun');                
   }
});

$('.sat').each(function(i, el) {
   if (i % 2 === 0) { 
    $(this).addClass('work-sat');
   }
   else {
    $(this).addClass('non-sat');    
   }
});

这样可以正常工作,但是如果你使用next,prev按钮更改上个月的某个月份。它会自动变成奇数,反之亦然。几个月后自动更改会自动更改。
我不知道为什么会这样?

1 个答案:

答案 0 :(得分:2)

最安全的方法是从表格单元格中读取年份月份和日期,然后检查当天

$('.ui-datepicker td .ui-state-default').each(function(i, el) {
    var month = $(el).parent().attr('data-month');
    var year = $(el).parent().attr('data-year');
    var day = $(el).text();
    var date = new Date(year, month, day);

    if (date.getDay() == 6) {

      i += 1;
      if (i % 2 == 0) {
        $(el).addClass('work-sat');
      } else {
        $(el).addClass('non-sat');
      }
    }
});

如果我标记了候补星期六,只要让i = 0;在init和调用onChangeMonthYear函数时。

您还可以将超时设置为1,以便标记立即显示。

这里是完整的小提琴https://jsfiddle.net/jajoevjy/8/