2012-02-13 99 views
1

我无法尝试组合仅显示星期一以及禁用jQuery datepicker的beforeShowDay参数上的特定日期...我希望用户只能够选择周一,除了2/20/2012和2/27/2012但我不知道如何实现这个...jQuery Datepicker只显示星期一和禁用某些星期一

<script type="text/javascript"> 
     var unavailableDates = ["20-02-2012", "27-12-2012"]; 
     function unavailable(date) { 
     dmy = (date.getDay() == 1); 
     if ($.inArray(dmy, unavailableDates) == -1) { 
      return [true, ""]; 
     } else { 
      return [false, "", "Unavailable"]; 
     } 
     } 
    </script> 
    <script type="text/javascript"> 
     $(function() { 
      $("#datepicker").datepicker({ 
      beforeShowDay: unavailable, 
      minDate: 0 
      }); 
     }); 
    </script> 

回答

1

你需要比较日期传递的另一个日期对象。相反,您将它与字符串数组中的项目进行比较。

我会用valueOfgetTime,这是自01月01日UTC返回毫秒数进行比较:

var unavailableDates = [ 
    new Date(2012, 1, 20).valueOf(), 
    new Date(2012, 1, 27).valueOf() 
]; 

function unavailable(date) { 
    if (date.getDay() === 1 && $.inArray(date.valueOf(), unavailableDates) < 0) { 
     return [true, ""]; 
    } else { 
     return [false, "", "Unavailable"]; 
    } 
} 

$(document).ready(function() { 
    $("#date").datepicker({ 
     beforeShowDay: unavailable 
    }); 
});​ 

例子:http://jsfiddle.net/aThZG/

+0

大,这是可以正常使用。不过,我确实有一个问题。 2月20日和27日,指定的月份是一月(1)时,以下是如何禁用的? 'new Date(2012,1,20).valueOf()' – r584 2012-02-14 01:33:08

+1

因为'Date'构造函数的'month'参数是基于0的。有关更多信息,请参阅['Date'](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date)文档。 – 2012-02-14 13:58:10

相关问题