minDate:Jquery中的0 DatePicker也禁用今天的日期

时间:2016-04-14 12:40:55

标签: javascript jquery datepicker

很抱歉发布这个简单的问题。应用程序即将部署,最近出现了一个错误,但我无法弄清楚它为什么会出现。

创建一个JS_BIN这是链接

http://jsbin.com/razufavuru/1/edit?html,js,output

错误是minDate:0也是禁用今天的日期,而我只想禁用过去的日期。

这是jquery代码:

$("#leaveEndDate").datepicker(
    {
        minDate: 0,
        beforeShowDay : disablePublicHolidaysAndWeekends,
        minDate : dateToday,
        onSelect : function(dateText, inst) {
            var firstDate = $("#leaveStartDate").datepicker('getDate');
            var selDate = null;
            selDate = $(this).datepicker('getDate');
            var lastDate = selDate;

            if (lastDate < firstDate) {
                $("#leaveEndDate").val('');
                $("#endDateError").html(
                        "End Date must be greater than Start Date");
                $(inst).datepicker('show');
            } else {
                $("#endDateError").html("");
                calculateDays(firstDate, lastDate);
            }

        }
    });

禁用假日和周末方法

function disablePublicHolidaysAndWeekends(date) {
 var month = date.getMonth();
 var day = date.getDate();
 var year = date.getFullYear();
if(day < 10 && day > 0){
    day = '0'+day;
}
var getdate = year+ '/' + '0' +(month + 1) + '/' + day;
for (var i = 0; i < publicHolidayDates.length; i++) {
    if ($.inArray( getdate ,publicHolidayDates) != -1 || new Date() > date) {
        return [ false ];
    }
}

var noWeekend = $.datepicker.noWeekends(date);

return !noWeekend[0] ? noWeekend : [ true ];

}

这是img

enter image description here

公众假期来自数据库。

当另一个数据标签的代码工作时,这让我感到很困惑。

$("#targetDate").datepicker({
   beforeShowDay : $.datepicker.noWeekends,
   minDate : 0
 });

这里它不会禁用今天的日期。 这是img

enter image description here

1 个答案:

答案 0 :(得分:1)

jQuery Datepicker值minDate期望值

  

键入:日期或数字或字符串

请改为minDate: new Date(),或minDate: '0'

更新:

导致您的问题的原因是您的自定义功能:

function disablePublicHolidaysAndWeekends(date) {
    var month = date.getMonth();
    var day = date.getDate();
    var year = date.getFullYear();
    if(day < 10 && day > 0){
        day = '0'+day;
    }
  if(month < 9 && month > 0){ //added control over month, as you would have got errors for month=10, 11, 12 in the below variable getdate
     month = '0' +(month + 1);
  }
  else{
    month += 1;
  }
    var getdate = year+ '/' + month + '/' + day;
    for (var i = 0; i < publicHolidayDates.length; i++) {
        //removed "|| new Date() > date"
        if ($.inArray( getdate ,publicHolidayDates) !== -1 ) {
            return [ false ];
        }
    }

    var noWeekend = $.datepicker.noWeekends(date);

    return !noWeekend[0] ? noWeekend : [ true ];
}

了解Date comparison in javascript Fiddle here