jQuery UI Datepicker:限制为两周

时间:2014-06-13 01:52:06

标签: javascript php jquery jquery-ui datepicker

我已经做了一些搜索,似乎找不到我正在寻找的具体例子(JS不是我的强项)。如果已经提供了另一个答案,我会道歉,并会永远感激这个链接。

我目前正在使用PHP构建一个付费计算器,并在我的首页上使用datepicker来确保一致性。我们每两周都会得到一份报酬,而且我想只提供那些每两周一次的选择日期。我星期六的所有日子都禁用了,但它允许所有星期六。我想可能有一个for循环或者我可以用来计算从指定日期起每隔一个星期六的东西,以确保显示正确的日期,但正如我上面所说,我不熟悉JS。 (我想从指定的日期开始计算,以便自动更新,我不必对两周的日期进行硬编码。)

我的代码如下:

$(function() {
    $( "#datepicker" ).datepicker({
    showOn: "button",
    buttonImage: "images/calendar.gif",
    buttonImageOnly: true,
    dateFormat: "dd-mm-yy",
    beforeShowDay: nonWorkingDates,
});
function nonWorkingDates(date){
    var day = date.getDay(), Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6;
    var closedDays = [[Sunday], [Monday], [Tuesday], [Wednesday], [Thursday], [Friday],];
    for (var i = 0; i < closedDays.length; i++) {
    if (day == closedDays[i][0]) {
        return [false];
    }
    }
    return [true];
}
});

但是多亏巴德里,我把它缩小到了:

$(function() {
    $( "#datepicker" ).datepicker({
    showOn: "button",
    buttonImage: "images/calendar.gif",
    buttonImageOnly: true,
    dateFormat: "dd-mm-yy",
    beforeShowDay: nonWorkingDates
});
function nonWorkingDates(date){
    if (date.getDay() != 6) {
        return [false, '', 'selected'];
    }
    return [true, ''];
}
});

作为相关事项(如果需要,我很乐意提出单独的问题),我可以让datepicker显示您可以选择的日期吗?或者是否有人可以建议实现这一目标的替代方案?

干杯

2 个答案:

答案 0 :(得分:0)

使用选项:

minDate: 0,
maxDate: '+14'

将datepicker限制为下一个两周。

答案 1 :(得分:0)

请参阅此常见问题解答,其中显示了如何允许用户仅选择一周中的特定日期: http://jqfaq.com/how-to-restrict-date-selection-to-specifc-week-days-in-the-dropdown/

要仅允许今天的其他星期六,您的代码看起来会略有不同:

function beforeShowDayHandler(date) {
    var today = new Date();
    if (date < today || date.getDay() != 6) {
        return [false, '', 'selected'];
    } else {
        var day = today.getDay();
        var comingSat = new Date();
        comingSat.setDate(comingSat.getDate() + 6 - day);
        var diffDays = dateDiffInDays(comingSat, date);
        var noOfWeeksAway = diffDays / 7;

        if ((noOfWeeksAway % 2 == false)) return [false, '', 'selected'];
    }
    return [true, ''];

}

全功能小提琴: http://jsfiddle.net/badri_cr/VNNYP/