2015-12-16 219 views
0

我試圖從datepicker中排除週末日期和每週星期一的數組。這是我到目前爲止有:Javascript datepicker排除週末日期和每週特定日期的排列

var disableddates = ["12-21-2015", "12-24-2015", "1-4-2016", "1-5-2016"]; 
function DisableSpecificDates(date) { 

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

    var currentdate = (m + 1) + '-' + d + '-' + y ; 

    for (var i = 0; i < disableddates.length; i++) { 

    if ($.inArray(currentdate, disableddates) != -1) { 
     return [false]; 
    } 
    } 

    var weekend = $.datepicker.noWeekends(date); 
    return [(weekend[0] || date.getDay() == 1)]; // I'm trying to disable Monday here 

} 

$(function() { 
    $("#date").datepicker({ 
    minDate: setMinDate, 
    maxDate: "+2M", 
    beforeShowDay: DisableSpecificDates 
    }); 
}); 

的具體日期(存儲在disableddates陣列中)被排除在外,因爲是週末,但週一仍是可選擇的 - 沒有任何一個知道我要去哪裏錯了,或對此的替代解決方案?

+0

不知道什麼$ .datepicker.noWeekends(日期);確實如此,但爲什麼你不嘗試顛倒順序呢? 'return [(date.getDay()== 1 || weekend [0])];' – juvian

回答

1

所以,如果我理解正確的,你只想要星期二星期五日期。檢查了$.datepicker.noWeekends(date);做了什麼,如果是週末日期,它會返回1,如果是週末日期,則返回0。因此,讓我們檢查你的代碼:

weekend[0] || date.getDay() == 1

如果weekend[0]是假的,這意味着,date.getDay() == 0== 6(星期日或星期六)。但weekend[0]對於​​將始終爲真。所以,你總是讓週一,如true || true == true

你想要的是:

return [(weekend[0] && date.getDay() != 1)]; 

這意味着允許它,如果it'sa工作日比周一不同

+0

感謝你的破解,我現在明白我的錯誤。 –

+0

沒問題!是一個簡單的修復,但更有用的知道爲什麼它發生:) – juvian

1

我發現:

0: Sunday 
1: Monday 
2: Tuesday 
3: Wednesday 
4: Thursday 
5: Friday 
6: Saturday 

所以這部分是正確的。我也看到你不及格dateDisableSpecificDates

我想嘗試(簡體):

$("#datepicker").datepicker({ 
 
    beforeShowDay: function(date) { 
 
    var day = date.getDay(); 
 
    return [(day != 1 && day != 0 && day != 6)]; 
 
    } 
 
});
<link href="https://code.jquery.com/ui/1.11.3/themes/smoothness/jquery-ui.css" rel="stylesheet"/> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://code.jquery.com/ui/1.11.3/jquery-ui.min.js"></script> 
 
<p>Date: 
 
    <input type="text" id="datepicker"> 
 
</p>

https://jsfiddle.net/hLa2uuov/2/

+0

如果我'return [day!= 1];'而不是'return [(weekend [0]];'我只是如果我'return [(weekend [0]];'而不是'return [day!= 1];''我將所有的週末排除在外,我的日期數組...... 。我基本上需要結合這兩個(所以我不會得到週一和週末) - 任何想法? –

+0

@JonKyte小提琴確實是你想要的 –

+0

12/24/15和1/5/15仍然可以選擇時OP請求它被禁用,儘管你的答案似乎是正確的。 – Scanner

相關問題