在jQuery datepicker中设置最小日期

时间:2013-12-05 23:59:04

标签: jquery datepicker

我必须在jQuery datepicker中设置最小日期。

仅允许的值是接下来三个月中的第一个。所以我希望日历打开到下个月而不是现月。

当我将最小日期设置为+ 1M时,它会打开2014年1月的日历,而不是2013年12月,但该月的第1天被禁用。

如果我将minDate设置为-0,我会看到dec日历没有有效的select选项,因为1st已经过了。用户必须前往下个月,并且第一个是可选择的。 我的代码是:

$("#effdatepicker").datepicker({
    showOn: "button",
    buttonImage: "images/calendar.gif",
    buttonImageOnly: true,
    minDate: "+1M",
    maxDate: "+3M",
    beforeShow: function () {
        if (jQuery('#enddatepicker').val() != "") {
            jQuery(this).datepicker('option', 'maxDate', jQuery('#enddatepicker').val());
        }

    },
    beforeShowDay: function (date) {
        //getDate() returns the day (0-31)
        if (date.getDate() == 1) {
            return [true, ''];
        }
        return [false, ''];
    }

});

2 个答案:

答案 0 :(得分:2)

var d  = new Date();
    d2 = new Date(),
    m  = d.getMonth(),
    y  = d.getFullYear();

d.setFullYear(m > 10 ? y+1 : y, (m < 11 ? m + 1 : 0), 1);
d2.setFullYear(m+3 > 10 ? y+1 : y, (m+3 < 11 ? m + 3 : (m + 3)-12), 1);

$("#effdatepicker").datepicker({
    showOn: "button",
    buttonImage: "images/calendar.gif",
    buttonImageOnly: true,
    minDate: d,
    maxDate: d2,
    beforeShow: function () {
        if (jQuery('#enddatepicker').val() != "") {
            jQuery(this).datepicker('option', 'maxDate', jQuery('#enddatepicker').val());
        }

    },
    beforeShowDay: function (date) {
        //getDate() returns the day (0-31)
        if (date.getDate() == 1) {
            return [true, ''];
        }
        return [false, ''];
    }
}).datepicker('setDate', d)

FIDDLE

答案 1 :(得分:0)

结束这样做。

var d = new Date();
var d2 = new Date();

d.setMonth(d.getMonth() + 1);
d.setDate('1');
d2.setMonth(d2.getMonth() + 3);
d2.setDate('1');

$("#effdatepicker").datepicker({
showOn: "button",
buttonImage: "images/calendar.gif",
buttonImageOnly: true,
minDate: d,
maxDate: d2,
beforeShow: function () {
    if (jQuery('#enddatepicker').val() != "") {
        jQuery(this).datepicker('option', 'maxDate', jQuery('#enddatepicker').val());
    }

},
beforeShowDay: function (date) {
    //getDate() returns the day (0-31)
    if (date.getDate() == 1) {
        return [true, ''];
    }
    return [false, ''];
}
}).datepicker('setDate', d)

FIDDLE