2012-02-21 126 views
1

我想做一個jQuery的日期選擇日曆,將突出顯示假期,並在datepicker的一天懸停時使節日名稱作爲工具提示。假期日期來自一個PHP文件(holidays.php)。我的問題是..我似乎無法突出所有的假期,而是突出顯示一個日期。更具體地說,只是第一個返回的日期。jquery datepicker突出顯示假期

$(document).ready(function(){ 
    var holiDays = (function() { 
    var val = null; 
    $.ajax({ 
     'async': false, 
     'global': false, 
     'url': 'holidays.php', 
     'success': function (data) { 
     val = data; 
     } 
    }); 
    return val; 
    })(); 

    var result = []; 
    var holiDays = holiDays.split(','); 

var s, k; 

    for (s = 0, k = -1; s < holiDays.length; s++) { 
     if (s % 4 === 0) { 
      k++; 
      result[k] = []; 
     } 

     result[k].push(holiDays[s]); 
    } 

    // This for loop is to check whether the values stored in result[] are correct 

    for (i = 0; i < result.length; i++) { 
    var f=result[i][0]+"-"+result[i][1]+"-"+result[i][2]; 
    alert(f); 
    } 


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

    for (i = 0; i < result.length; i++) { 
    var f=result[i][0]+"-"+result[i][1]+"-"+result[i][2]; 
// WHEN I ALERT THE VALUE OF f HERE, 
// IT ALWAYS DISPLAY THE FIRST VALUE IN THE RESULT ARRAY. WHY? 
alert(f); 

    var d = new Date(f); 

       if (date.getFullYear() == d.getFullYear() 
         && date.getMonth() == d.getMonth() 
         && date.getDate() == d.getDate()) { 
        return [true, 'holiday', result[i][3]]; 
       } else { 
        return [true]; 
       } 
       } 

    } 


    $(function() { 
     $('input.pickerClass').live('click', function() { 
      $(this).datepicker({dateFormat: 'yy-mm-dd', beforeShowDay: nationalDays }).focus(); 
     }); 

    }); 



}); 

當我提醒陣列result[]的nationalDays功能以外內的值,存儲的值似乎是正確的。

for (i = 0; i < result.length; i++) { 
    var f=result[i][0]+"-"+result[i][1]+"-"+result[i][2]; 
    alert(f); 
    } 

但由於某種原因,當我提醒result[]的值內的爲下nationalDays功能循環,它只返回存儲在數組結果[]的第一個日期。但爲什麼?

任何人有想法?..我將非常感激。 :)

回答

0

我已經知道我出錯了。

if (date.getFullYear() == d.getFullYear() 
         && date.getMonth() == d.getMonth() 
         && date.getDate() == d.getDate()) { 
        return [true, 'holiday', result[i][3]]; 
       } else { 
        return [true]; 
       } 

本來應該

if (date.getFullYear() == d.getFullYear() 
         && date.getMonth() == d.getMonth() 
         && date.getDate() == d.getDate()) { 
        return [true, 'holiday', result[i][3]]; 
       } 
        return [true]; 

我只是刪除了else語句和它的工作!

相關問題