2012-02-24 7 views
3

クライアントのウェブサイトにjQuery UIのdatepickerを設定しようとしていて、特定の日とすべての日曜日を除くすべての日曜日を非表示にする必要があります。これを行うための簡単な方法がありますjQueryのUIで1つを除くすべての日曜日を無効にするDatepicker

 function nonWorkingDates(date){ 
      var day = date.getDay(), Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6; 
      var closedDates = [[02,24,2012],[03,14,2012],[03,15,2012],[03,20,2012],[03,21,2012],[03,23,2012],[03,26,2012],[03,27,2012]]; 
      var closedDays = [[Sunday]]; 
      var mothersDay = [[04,18,2012]]; 
      for (var i = 0; i < closedDays.length; i++) { 
       if (day == closedDays[i][0]) { 
        return [false]; 
       } 
      } 
      for (i = 0; i < closedDates.length; i++) { 
       if (date.getMonth() == closedDates[i][0] - 1 && date.getDate() == closedDates[i][1] && date.getFullYear() == closedDates[i][2]) { 
        return [false]; 
       } 
      } 
      return [true]; 
     }  
     <%-- Load jQuery UI Calendar --%> 
     $(function() { 
      jQuery("#calendar1").datepicker({ 
      beforeShowDay: nonWorkingDates, 
      dateFormat: 'dd/mm/yy' 
      });   
     }); 

:現在、別の答えから重く借りた私のコードは、として実行されますか?

答えて

1

あなたは自分の他のロジックの前に "特別な" 日付の別の条件を追加することができます。

function nonWorkingDates(date) { 
    var day = date.getDay(), 
     Sunday = 0, 
     Monday = 1, 
     Tuesday = 2, 
     Wednesday = 3, 
     Thursday = 4, 
     Friday = 5, 
     Saturday = 6; 
    var closedDates = [ 
     [02, 24, 2012], 
     [03, 14, 2012], 
     [03, 15, 2012], 
     [03, 20, 2012], 
     [03, 21, 2012], 
     [03, 23, 2012], 
     [03, 26, 2012], 
     [03, 27, 2012]]; 

    var closedDays = [[Sunday]]; 
    var mothersDay = [03, 18, 2012]; 

    /* Mother's day check: */ 
    if (date.getMonth() === mothersDay[0] - 1 && 
     date.getDate() === mothersDay[1] && 
     date.getFullYear() === mothersDay[2]) { 

      return [true]; 
    }         

    for (var i = 0; i < closedDays.length; i++) { 
     if (day == closedDays[i][0]) { 
      return [false]; 
     } 
    } 
    for (i = 0; i < closedDates.length; i++) { 
     if (date.getMonth() == closedDates[i][0] - 1 && 
      date.getDate() == closedDates[i][1] && 
      date.getFullYear() == closedDates[i][2]) { 

      return [false]; 
     } 
    } 
    return [true]; 
} 

例:http://jsfiddle.net/6wwSn/

関連する問題