jquery - 禁用 jQuery UI Datepicker 中除周日之外的所有周日

标签 jquery jquery-ui datepicker jquery-ui-datepicker

我正在尝试为我客户的网站设置 jQuery UI 日期选择器,它需要隐藏某些日子,以及除母亲星期日之外的所有星期日。目前我的代码大量借用了另一个答案,运行如下:

        function nonWorkingDates(date){
            var day = date.getDay(), Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6;
            var closedDates = [[02,24,2012],[03,14,2012],[03,15,2012],[03,20,2012],[03,21,2012],[03,23,2012],[03,26,2012],[03,27,2012]];
            var closedDays = [[Sunday]];  
            var mothersDay = [[04,18,2012]];  
            for (var i = 0; i < closedDays.length; i++) {
                if (day == closedDays[i][0]) {
                    return [false];
                }
            }
            for (i = 0; i < closedDates.length; i++) {
                if (date.getMonth() == closedDates[i][0] - 1 && date.getDate() == closedDates[i][1] && date.getFullYear() == closedDates[i][2]) {
                    return [false];
                }
            }
            return [true];
        }       
        <%-- Load jQuery UI Calendar --%>
        $(function() {
            jQuery("#calendar1").datepicker({
            beforeShowDay: nonWorkingDates,
            dateFormat: 'dd/mm/yy'
            });         
        });

有什么简单的方法可以做到这一点吗?

最佳答案

您可以在其他逻辑之前添加“特殊”日期的另一个条件:

function nonWorkingDates(date) {
    var day = date.getDay(),
        Sunday = 0,
        Monday = 1,
        Tuesday = 2,
        Wednesday = 3,
        Thursday = 4,
        Friday = 5,
        Saturday = 6;
    var closedDates = [
        [02, 24, 2012],
        [03, 14, 2012],
        [03, 15, 2012],
        [03, 20, 2012],
        [03, 21, 2012],
        [03, 23, 2012],
        [03, 26, 2012],
        [03, 27, 2012]];

    var closedDays = [[Sunday]];
    var mothersDay = [03, 18, 2012];  

    /* Mother's day check: */
    if (date.getMonth() === mothersDay[0] - 1 &&
        date.getDate() === mothersDay[1] &&
        date.getFullYear() === mothersDay[2]) {

            return [true];
    }                                 

    for (var i = 0; i < closedDays.length; i++) {
        if (day == closedDays[i][0]) {
            return [false];
        }
    }
    for (i = 0; i < closedDates.length; i++) {
        if (date.getMonth() == closedDates[i][0] - 1 &&
            date.getDate() == closedDates[i][1] &&
            date.getFullYear() == closedDates[i][2]) {

            return [false];
        }
    }
    return [true];
}

示例: http://jsfiddle.net/6wwSn/

关于jquery - 禁用 jQuery UI Datepicker 中除周日之外的所有周日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9432188/

相关文章:

javascript - 德国货币的 LocalString 方法?

php - 将值从 PHP 发送到 jQuery

javascript - 保护未指定的 Javascript 事件处理程序不被垃圾收集

javascript - bootstrap-datepicker:选择特定日期时显示 DIV

javascript - 从一个 Waypoints.js 构造函数动态定位多个 HTML 元素

JQuery 无法在我的 Google Chrome 扩展、内容脚本中运行?

javascript - 如何使对话框位于窗口中心?

jQuery UI 对话框总是在 Fancybox 窗口后面打开

ios - UIDatePicker 第一个值集不是默认读取

Javascript datepicker onSelect 不触发