2014-03-07 30 views
0

我想使用jQuery datepicker來顯示日期只在每年7月和8月,它的作品除了削減8月31日。我也試過從七月中旬到中期9月,它顯示除8月31日之外的所有這些日子。datepicker()不顯示所有要求的日期

jQuery的

function generateDates(){ 

     var availableDates = {}; 

     var startYear = (new Date()).getUTCFullYear(); 
     var endYear = 2050; 

     for(var currentYear = startYear; currentYear <= endYear; currentYear++){ 

       //Loop over every year from current year to 2050 
       for (var d = new Date(currentYear, 7, 1); d <= new Date(currentYear, 8, 31); d.setDate(d.getDate() + 1)) { 

        availableDates[d.getUTCFullYear() + "-0" + d.getUTCMonth() + "-" + (d.getUTCDate() <= 9 ? "0" + d.getUTCDate() : d.getUTCDate())] = 1; 

       } 

     } 

     return availableDates; 
} 

$(function() { 
var dates_allowed; 



dates_allowed = generateDates(); 

$('#datepicker').datepicker({ 
    // these aren't necessary, but if you happen to know them, why not 
    minDate: 0, 
    maxDate: new Date(2050, 8, 31), 

    // called for every date before it is displayed 
    beforeShowDay: function(date) { 

     // prepend values lower than 10 with 0 
     function addZero(no) { 
      if (no < 10){ 
       return "0" + no; 
      } else { 
       return no; 
      } 
     } 

     var date_str = [ 
      addZero(date.getFullYear()), 
      addZero(date.getMonth() + 1), 
      addZero(date.getDate())  
     ].join('-'); 

     if (dates_allowed[date_str]) { 
      return [true, 'good_date', 'This date is available']; 
     } else { 
      return [false, 'bad_date', 'We are sorry, this date is not available']; 
     } 
    } 
}); 
}); 

HTML

<input id="datepicker" name="startdate" required> 

任何幫助將非常感激。

問候

回答

0

而是檢查可以檢查當前日期的月份是七月和八月使用getMonth或使用getYear年是< = 2050的每一個日期。

的js日期對象的引用:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

代碼:

$(function() { 

    $('#datepicker').datepicker({ 
     // these aren't necessary, but if you happen to know them, why not 
     minDate: 0, 
     maxDate: new Date(2050, 7, 31), 

     // called for every date before it is displayed 
     beforeShowDay: function (date) { 

      if ((date.getMonth()==6 || date.getMonth()==7) && date.getYear()<=2050) { 
       return [true, 'good_date', 'This date is available']; 
      } else { 
       return [false, 'bad_date', 'We are sorry, this date is not available']; 
      } 
     } 
    }); 
}); 

演示:http://jsfiddle.net/IrvinDominin/EQQrT/

+0

感謝感謝那工作過一種款待 –

+0

@LeeChant歡迎您! –