datepicker在9月之后不启用日期

时间:2014-07-06 06:21:06

标签: javascript jquery datepicker

我正在尝试为用户创建一些特定日期,因为我已经在范围内指定了一些日期。一切看起来都不错,除了日期选择器没有选择超过9月的日期。

我找不到错误,如果有人可以提供帮助,那将是一个很大的帮助。

此处有JsFiddle网址: - http://jsfiddle.net/8AXaw/1/

<script type='text/javascript'>
    var availableDates = "2014-07-04, 2014-07-05, 2014-07-06, 2014-07-07, 2014-07-08, 2014-07-09, 2014-07-10, 2014-07-11, 2014-07-12, 2014-07-13, 2014-07-14, 2014-07-15, 2014-07-16, 2014-07-17, 2014-07-18, 2014-07-19, 2014-07-20, 2014-07-21, 2014-07-22, 2014-07-23, 2014-07-24, 2014-07-25, 2014-07-26, 2014-07-27, 2014-07-28, 2014-07-29, 2014-07-30, 2014-07-31, 2014-08-01, 2014-08-02, 2014-08-03, 2014-08-04, 2014-08-05";
    var availableDate = availableDates.split(', ');
    function available(date) {
       dmy = date.getFullYear() + '-0' + (date.getMonth()+1) + '-0' +date.getDate();
       if (jQuery.inArray(dmy, availableDate) != -1) {
          return [true, '','Available'];
       } else {
         return [false,'','unAvailable'];
       }
    }
    jQuery('#datepicker').datepicker({ beforeShowDay: available });
</script>

此处有JsFiddle网址: - http://jsfiddle.net/8AXaw/1/

1 个答案:

答案 0 :(得分:4)

这就是你构建日期的方式

var dmy = date.getFullYear() + '-0' + (date.getMonth()+1) + '-0' +date.getDate();

注意零,你最后会得到像

这样的日期
2014-07-08
2014-07-09
2014-07-010
2014-07-011
2014-07-012

很明显,为什么它最多只能09,因为010无效,并且您在这几个月内也一样。

您可以添加一个在需要时填充数字的功能

function available(date) {
    var dmy = date.getFullYear() + '-' + pad(date.getMonth() + 1) + '-' + pad(date.getDate());
    if (jQuery.inArray(dmy, availableDate) != -1) {
        return [true, '', 'Available'];
    } else {
        return [false, '', 'unAvailable'];
    }
}

function pad(n) {
    return n < 10 ? ('0' + n) : n;
}

FIDDLE