2016-04-14 76 views
0

对不起,发布这个简单的问题。应用程序将很快部署,最近出现了一个错误,但我无法弄清楚它为什么会来。minDate:0在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

+0

可能重复? - http://stackoverflow.com/questions/16059192/jquery-ui-datepicker-disable-current-date-but-not-the-highlight – deeveeABC

+0

不,我不想禁用当前日期 –

回答

1

jQuery的日期选择器值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

+0

试过这个也不工作 –

+0

你可以在小提琴中复制你的错误吗? – Yuri

+0

好吧,我会创建它 –

相关问题