2012-11-01 83 views
0

我使用Davidwalsh's method阻止datepicker日曆上的特定日期,但在我的生產服務器數組中的某些日期沒有被阻止,所以我試圖做一個乾淨的代碼複製,並發現結果中的類似差異。Jquery UI日期選擇器beforeShowDay錯誤與阻止日期數組

This is the JS fiddle

有人能親切地指出我丟失的東西嗎?

出於某種原因,11月1日被封鎖,第四nov沒有被封鎖。

在我的生產服務器的情況下,我們試圖在12月阻止2個日期,但它們未能被禁用。本月的日期被阻止。

任何幫助將不勝感激!

$(document).ready(function(){ 

     var cdates = new Array(); 
     cdates = ['2012-11-04','2012-11-12','2012-12-03','2012-12-12','2012-12-18','2012-12-20']; 

     $('.datepicker').datepicker({ 
      beforeShowDay: check_closed 
     }); 

     function check_closed(date) 
     {    var m = date.getMonth(), d = date.getDate(), y = date.getFullYear(); 

      for (i = 0; i < cdates.length; i++) { 
       if($.inArray(y + '-' + (m+1) + '-' + d,cdates) != -1 || new Date() > date) { 
        console.log('bad: ' + (m+1) + '-' + d + '-' + y + '/' + cdates[i]); 
        return [false,'']; 
       } 
        console.log('good: ' + (m+1) + '-' + d + '-' + y); 
       return [true,''];  
      }     
     } 
    });​ 

回答

1

您還沒有填充一天的0。例如,在本月1日:

d = date.getDate(); // => 1 and for adequate comparison needs to be 01 

解決辦法:

d = date.getDate(); 
if(d < 10) { d = "0" + d; } 

這就是爲什麼月4日是不禁用,因爲var m =「2012-11-4」,並且數組中存在的唯一值是「2012-11-04。

這裏是一個工作前充足的http://jsfiddle.net/bruno/KYzaR/8/

+0

OMGosh ...我被推遲了!謝謝你,先生! – Winterain

+1

我的解決方案中添加了if(d <10){d ='0'+ d; } – Winterain

+0

@Winterain你是對的。謝謝你,我已經修改了答案。去upvote你:) – Bruno

相關問題