我目前正在开发一个Jquery日期选择器,其中假期被禁用,所有星期日,除了每个月的第一个。我一直在努力尝试使用代码,并发现如何禁用所有星期日和假期,但我无法弄清楚如何启用evey月的第一个星期日。
目前我的代码如下:
<script type="text/javascript">
(function(){
var natDays = [[12, 24],[12, 25], [1,1], [12, 31]];
var daysToDisable = [0];
function nationalDays(date) {
for (i = 0; i < natDays.length; i++) {
if (date.getMonth() == natDays[i][0] - 1
&& date.getDate() == natDays[i][1]) {
return [false, natDays[i][2] + '_day'];
}
}
for (i = 0; i < daysToDisable.length; i++) {
if ($.inArray(day, daysToDisable) != -1) {
return [false];
}
}
return [true];
}
// Datepicker
$('#datepicker').datepicker({
inline: true,
firstDay: 1,
changeYear: true,
changeMonth: true,
beforeShowDay: nationalDays,
});
});
</script>
答案 0 :(得分:1)
从逻辑上讲,本月的第一个星期日总是在之前第7天,而第二个星期日(以及之后的星期日)在之后。
function nationalDays(date) {
for (i = 0; i < natDays.length; i++) {
if (date.getMonth() == natDays[i][0] - 1 && date.getDate() == natDays[i][1]) {
return [false, natDays[i][2] + '_day'];
}
}
if (date.getDate() > 7 && $.inArray(date.getDay(), daysToDisable) != -1)
return [false];
}
return [true];
}
我还建议将natDays
数组的结构更改为平面数组,以加快查找速度。对于类前缀(在您的示例中未设置),您可以使用具有匹配索引的额外数组。你的最终功能如下:
var natDays = ["12-24", "12-25", "1-1", "12-31"];
var classPrefixes = ["", "", "", ""];
var daysToDisable = [0];
function nationalDays(date) {
var index = $.inArray((date.getMonth() + 1) + "-" + date.getDate(), natDays);
if (index != -1) {
return [false, classPrefixes[index] + '_day'];
}
if (date.getDate() > 7 && $.inArray(date.getDay(), daysToDisable) != -1)
return [false];
}
return [true];
}
答案 1 :(得分:0)
您正在寻找的方法是date.getDay(),它将返回0到6之间的数字,0表示星期日。
function nationalDays(date) {
if(date.getDay() == 0) {
// do stuff...