2016-04-05 114 views
0

我有一個日曆,我需要禁用特定的日期。禁用jQuery日期選擇器中的特定日期不起作用

我使用spiceforms.com/blog/how-to-disable-dates-in-jquery-datepicker-a-short-guide/上的代碼作爲編寫我的例子,它工作正常,但在某些時候它停止工作,我無法找到病因, 我的代碼是:

function Disableentries(date) { 
    // here I get an array of dates in yyyy-mm-dd format 
    var datesarray = datesfromcalendar(); 

    var arraynoentry = datesarray[0]; 
    var m = date.getMonth(); 
    var d = date.getDate(); 
    var y = date.getFullYear(); 
    var currentdate = y + '-' + (m + 1) + '-' + d ; 

    // We will now check if the date belongs to disabled dates array 
    for (var i = 0; i < arraynoentry.length; i++) { 
     // Now check if the current date is in disabled dates array. 
     if (jQuery.inArray(currentdate, arraynoentry) != -1) { 
      return [0]; 
     }else{ 
      return [1]; 
     } 
    } 
} 

jQuery(function() { 
    jQuery("#edit-available-from-datepicker-popup-0-bloque").datepicker({ 
     minDate: 0, 
     beforeShowDay: Disableentries, 
     dateFormat: 'dd-mm-yy', 
    }); 
}); 

如此代碼我得到一些日期禁用的結果,但他們沒有在數組中的人。我得到的殘疾人從2016年10月29日全日曆2016年12月31日,然後沒事的時候我的禁用日期將在以下圖片所示的那些: calendar 1 calendar 2

¿這有什麼錯代碼或以其他方式解決這個問題?

編輯:函數datesfromcalendar()獲取日期,需要從日曆中出現在圖片中的 desabled。這裏的 代碼:

function datesfromcalendar(){ 
    var arraynoentry= ['2000-01-15']; 
    var arraynoexit= ['2000-01-16']; 
    jQuery('.cal-month').each(function(){ 
    var month = jQuery(this).data("cal-month"); 
    var year = jQuery(this).data("cal-year"); 
    //alert(month); 
    var noentry = jQuery(this).find('.cal-na-pm'); 
    var noexit = jQuery(this).find('.cal-na-am'); 
    jQuery.each(noentry,function(){ 
     var day = jQuery(this).text(); 
     arraynoentry.push(year + "-" + month + "-" + dia); 
     //block entries 
     //alert('hello'); 
    }) 
    jQuery.each(nosalida,function(){ 
     var day = jQuery(this).text(); 
     arraynoexit.push(year + "-" + month + "-" + dia); 
     //block exits 
     //alert('bye'); 
    }) 
    }) 
    var results = [arraynoentry,arraynoexit]; 
    return results; 
} 
+0

向我們展示你的函數'datesfromcalendar()'太 – urbz

+0

datesfromcalendar工作正常,並返回禁用的日期,我從畫面中的日曆(我第一次檢查的話)獲得的功能,但無論如何我會把它放在這裏。 –

回答

0

我發現這個問題。

當我們將1與月份相加(將月份從0到11轉換爲從1到12的月份)時,結果是一個整數(1,2,3 ... 10,11,12)。數組中的日期有01,02,03,(...)格式的月份,所以當我們比較時,只有2位數的月份返回正確的結果。

爲了解決這個問題,我們必須更改月份格式以匹配數組中的一個,以便我們可以比較它們。 此代碼的伎倆:

var currentdate = y + '-' + ('0'+(m + 1)).slice(-2) + '-' + d ; 
相關問題