1

我试图让我的日期选择器更好,但我只设法启用(首先我禁用了所有)星期一和星期四,但现在我遇到了特定日期的问题。我尝试了很多可能性,但要么选择每月 21 日,要么根本不起作用。

现在我正在尝试启用该日期(2013,04,21)(以后可能会更多)

  $( '#vfb-datum-75' ).datepicker({
              beforeShowDay: settings,
  });  

  function settings(date) {
      if (date.getDay() == 1)       
          { return [true, "","Works"];
      } else if (date.getDay() == 4)
          { return [true, "","Works"];
      } else if (date.getDate() == (2013,04,21))  <-- this doesn't work
          { return [true, "","Works"];
      } else { return [false,"",""]; 
  }}

感谢帮助。

4

1 回答 1

2

http://jsfiddle.net/f7kAc/

您可以比较年、日和月。请记住,该月是从零开始的。

date.getDate() == 21 && date.getMonth() == 3 && date.getFullYear() == 2013

http://jsfiddle.net/f7kAc/1/

您也可以使用此方法将日期转换为另一个日期。

date - new Date(2013, 3, 21) == 0

但是,如果您打算将此功能扩展为拥有 50 多个特殊日期,您可能需要一些更快速、更易于配置的东西。

var specialDays = 
{2013 : 
  {
      3 : 
          {
              21 : [true, "", "WORKS"]
          },
      4 : 
          {
              15 : [true, "", "WORKS"],
              17 : [true, "", "WORKS"]
          },
  },
};

然后在你的函数中:

... else if (!!specialDays[date.getYear()] && !!specialDays[date.getYear()][date.getMonth()] && !!specialDays[date.getYear()][date.getMonth()][date.getDate()]) {
  return specialDays[date.getYear()][date.getMonth()][date.getDate()];
}
于 2013-03-11T19:49:46.117 回答