2013-03-15 108 views
0

我做了一個自定義的日期選擇器: http://jsfiddle.net/u8fVj/定製jQuery UI的日期選擇器來限制使用jQuery UI日期

$("#input_custom_date").datepicker({ 
numberOfMonths: 2, 
beforeShowDay: function(date) { 
    //Get today's date 
    var today = new Date(); 
    today.setHours(0,0,0,0); 

    if (today.getDay() == 4 || today.getDay() == 5 || today.getDay() == 6) { 
     //If today is Wednesday, Thursday, Friday don't allow Sunday to be selectable until the next week on Sunday. 
     var disabledDate = new Date(today||new Date()); 
     disabledDate.setDate(disabledDate.getDate() + (0 - 1 - disabledDate.getDay() + 7) % 7 + 1); 
     return [(date > today && date.getDay() == 0 && date.toString() != disabledDate.toString()), '']; 
    }else if(today.getDay() == 0){ 
     //If today is Sunday, don't allow today to be selectable. 
     var disabledDate = today; 
     var curr_date = date.getDate(); 
     var curr_month = date.getMonth(); 
     var curr_year = date.getFullYear(); 
     var dDate = new Date(curr_year, curr_month, curr_date); 
     return [(date > today && date.getDay() == 0 && dDate.toString() != disabledDate.toString()), '']; 
    }else{ 
     //Everything is fine, allow all Sundays to be selectable 
     var day = date.getDay(); 
     return [(date > today && day == 0), '']; 
    } 
} 

}); 

現在用戶應該只能夠選擇在一個週日的日期。它需要檢查並查看今天的日期是否是即將到來的星期日之前的星期三,星期四或星期五,如果是,則日期選擇器應該禁用即將到來的星期日。同樣,如果今天的日期是星期天,它應該在日期選擇器中停用。

但是,我不需要僅選擇星期日,而需要將日期選擇器更改爲僅允許星期一和星期二進行選擇。如果今天的日期是星期四,星期五或星期六,它應該禁用即將到來的星期一和星期二。如果今天是星期一,它應該在本週的星期一和星期二停用。如果今天的日期是星期二,它應該只禁用今天的日期。

此外,我需要能夠拋出特定日期假期被禁用,這可能是硬編碼。

不知道如何超越我現在所擁有的,並希望得到任何幫助。我一直在努力使這個工作,並不能得出的邏輯工作。

回答

1

您基本上需要將.getDay() == 0支票移至.getDay() == 1 || .getDay() == 2,1和2週一和週二。類似的比較需求disableDate

disabledDate.setDate(disabledDate.getDate() + (1 - 1 - disabledDate.getDay() + 7) % 7 + 1); 

0 - 1要做更改爲1 - 1(不需要的,但是爲了更完成)獲得週一。週二收益率爲2 - 1

至於處理特殊的日子,你可以存儲這些在DOM中的<ul hidden>,做這些先檢查:

beforeShowDay: function(date) { 
    //Get today's date 
    var today = new Date(), specialDate = false; 
    today.setHours(0,0,0,0); 

    $(".special-dates li").each(function() { 
     if ($(this).text() == today.toString()) { 
      specialDate = true; 
      return false; 
     } 
    }); 
    if (specialDate) { 
     return [true, '']; 
    } 

http://jsfiddle.net/ExplosionPIlls/u8fVj/1/

+0

由於爆炸!因此,如果「今天」是星期一或星期二,我需要在星期一和星期二屏蔽掉。換句話說,如果「今天」是星期二,它會以同樣的方式在星期一顯示;週一和週二都會阻止。那有意義嗎? 此外,我還不清楚如何在檢查週一和週二時如何將特殊日期放入回覆日期。 – Keith 2013-03-15 06:29:26

+0

我認爲*如果「今天」是那兩天中的任何一天,這可能會按照我上面描述的禁用星期一和星期二的方式工作?不知道它是否是最有效的。 也放在UL與特殊的日期,並不能得到它的工作,如果你可以幫助: http://jsfiddle.net/w4dMq/ – Keith 2013-03-15 06:41:40