在jquery datepicker中仅提供当月可用的半月日期

时间:2013-02-27 10:48:11

标签: jquery jquery-ui-datepicker

仅限日期1&任何月份都应该有16个可供选择。应禁用所有其他日期。 请帮忙

$(closure.el).find('#listcmd_invoices .add .invoice-from-date-input')
             .datepicker({
                changeYear: true,
                showAnim: 'slide',
                changeMonth : true,
                yearRange : "Y:+2Y",
                beforeShowDay: function(date){
                        return [date.getDate() == 16 && date.getDate() == 1,""]
                    }
             });

2 个答案:

答案 0 :(得分:3)

假设JQuery-UI数据选择器,就像您标记了您的问题一样,初始化datepicker时应该提供的选项是beforeShowDay。该文档提供了对该方法必须返回的内容的相当好的描述,为清楚起见,在下面重现:

  

函数将日期作为参数,并且必须返回一个数组,其中[0]等于true / false,指示此日期是否可选,[1]等于CSS类名称或“”表示默认演示文稿,和[2]这个日期的可选弹出工具提示。在显示之前,会在datepicker中调用它。

所以对你来说,像是:

$( "#datepicker" ).datepicker({
  beforeShowDay: function(date){
    return [
      date.getDate() == 16 || date.getDate() == 1,
      ""
    ];
  }
});

(刚看到你的代码更新。唯一的问题是你的测试是“天等于1和天等于16”..显然都不行。所以你错了就是你应该使用OR!)

答案 1 :(得分:1)

$(closure.el).find('#listcmd_invoices .add .invoice-from-date-input')
         .datepicker({
            changeYear: true,
            showAnim: 'slide',
            changeMonth : true,
            yearRange : "Y:+2Y",
            beforeShowDay: function(date){
                               **if (date.getDate() == 1 || date.getDate() == 16)
                                   return [true,""];
                               else
                                   return [false,""];**
                            }
});