在jQuery UI datepicker中禁用假日、星期日和过去的日期

Disable holiday, sundays and past dates inside jQuery UI datepicker

本文关键字:星期日 过去 日期 假日 UI jQuery datepicker      更新时间:2023-09-26

我正在用jQuery日期picker创建约会表单。我搜索了周围,但似乎我不能结合所有的功能,我想在展示前的一天。我想从日期选择器禁用今天之前的所有日期(昨天和其余部分,因为你不能在今天之前的日期预约,它必须晚些时候),然后禁用每个星期日(其非工作日)和公共假期(这一个使用数组)。我从别人那里看到的是,jQuery是专门为一个函数,比如公共假日,它只是一个数组,但如何禁用前一天和周日?

我试着跟随这篇文章http://articles.tutorboy.com/2010/09/03/jquery-ui-datepicker-disable-specified-dates/但我不知道如何结合它。有人能告诉我怎么做吗?

我在每个星期天都禁用了这个

 function disabledSunday(date) {
     var day = date.getDay();
     return [(day != 0), ''];
 }
 $('#datepicker').datepicker({
     dateFormat: 'mm-dd-yy',
     beforeShowDay: disabledSunday
 });

到今天为止的所有日期

 var date = new Date();
 var m = date.getMonth(),
     d = date.getDate(),
     y = date.getFullYear();
 // Disable all dates till today
 $('#datepicker').datepicker({
     minDate: new Date(y, m, d),
     dateFormat: 'mm-dd-yy',
 });

此选项适用于特定日期,如公共假期

 // Disable a list of dates
 var disabledDays = ["5-31-2013", "6-01-2013"];
 function disableAllTheseDays(date) {
     var m = date.getMonth(),
         d = date.getDate(),
         y = date.getFullYear();
     for (i = 0; i < disabledDays.length; i++) {
         if ($.inArray((m + 1) + '-' + d + '-' + y, disabledDays) != -1) {
             return [false];
         }
     }
     return [true];
 }
 $('#datepicker').datepicker({
     dateFormat: 'mm-dd-yy',
     beforeShowDay: disableAllTheseDays
 });

如何将这三个函数合二为一,我对Jquery和javascript不太了解

试试:-HTML代码:<input id="txtDate" />

function disabledays(date) {
    var ymd = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
        //if u have to disable a list of day
         var removeDays = ["2013-6-11","2013-6-31" ];
         if ($.inArray(ymd, removeDays) >= 0) {
        return [false];
    } else {
        //Show accept sundays
        var day = date.getDay();
        return [(day == 1 || day == 2 || day == 3 || day == 4 ||day == 5 ||day == 6 )];
    }
}
$(function () {
    $('#txtDate').datepicker({
        beforeShowDay: disabledays
    });
});

试试这个
$("#datepicker").datepicker({ minDate: 0 });

您可以使用minDate选项禁用过去的日期。此外,您可以使用beforeShowDay选项来检查其他两个条件**。

$("#datepicker").datepicker({
        minDate: 0,
        beforeShowDay: function (date) {
            // it is possible to write the following function using one line
            // of code; instead, multiple if/else are used for readability
            var ok = true;
            if (date.getDay() === 0) { // is sunday
                ok = false;
            } else {
                var dateStr = $.datepicker.formatDate("m-dd-yy", date);
                if ($.inArray(dateStr, disabledDays) >= 0) { // is holiday
                    ok = false;
                }
            }
            return [ok, ""];
        }
    });
});

**实际上可以检查该函数中的所有三个条件。

愿你在这里找到你的解决方案

http://jqueryui.com/datepicker/min-max