両方の for ステートメントを組み込む試みを反映するようにコードを更新します。
function unavailableDays(date) {
//date array to be disabled
var disabledDays = ["1963-3-31", "1965-9-18", "1965-9-19",
"1965-10-2", "1965-10-3", "1965-10-9", "1965-10-10"];
var yy = date.getFullYear(), mm = date.getMonth(), dd = date.getDate();
for (i = 0; i < disabledDays.length; i++) {
if($.inArray(yy + '-' + (mm+1) + '-' + dd,disabledDays) != -1 || new Date() < date) {
return [false];
}
}
return [true];
//date range to be disabled
var first = new Date("1978-8-10");
var last = new Date("1978-11-05");
var unavailableRange = [];
var yy = date.getFullYear(), mm = date.getMonth(), dd = date.getDate();
for(j = first; j < last; j.setDate(j.getDate() + 7)){
if($.inArray(yy + '-' + (mm+1) + '-' + dd,unavailableRange) != -1 || new Date() < date) {
return [false];
}
}
return [true];
}
日付の範囲を持つこの初期変数を以下のavailableDays関数に組み込んで、datepickerのbeforeShowDayで使用して日付を無効にできるようにしようとしています。別の関数を作成しようとしましたが、 beforeShowDate では機能しなかったため、その中にある必要があると思います。
var first = new Date("1978-08-10");
var last = new Date("1978-11-05");
var dates = [];
for (var i = first; i < last; i.setDate(i.getDate() + 7))
dates.push(new Date);
var disabledDays = ["1963-2-17", "1963-2-24", "1963-3-3", "1963-3-10", "1963-3-17", "1963-3-24", "1963-3-31", "1965-9-18", "1965-9-19", "1965-10-2", "1965-10-3", "1965-10-9", "1965-10-10"];
function unavailableDays(date) {
var yy = date.getFullYear(),
mm = date.getMonth(),
dd = date.getDate();
for (i = 0; i < disabledDays.length; i++) {
if ($.inArray(yy + '-' + (mm + 1) + '-' + dd, disabledDays) != -1 || new Date() < date) {
return [false];
}
}
return [true];
}
$(document).ready(function () {
$('.selector').datepicker({
inline: true,
dateFormat: 'yy-mm-dd',
constrainInput: true,
changeYear: true,
changeMonth: true,
gotoCurrent: true,
minDate: new Date(1962, 1 - 1, 1),
//months are index-based(1-1)
maxDate: new Date(2011, 10 - 1, 24),
yearRange: '-60y',
beforeShowDay: unavailableDays,
onSelect: function (dateText, inst) {
$("#img").attr("src", "http://www.example.com" + dateText + ".jpg");
var chosenDates = $.datepicker.parseDate('yy-mm-dd', dateText);
var backToString = $.datepicker.formatDate('MM dd' + ',' + ' yy', chosenDates);
$('.info').html('You are viewing:' + '<br />' + backToString);
}
});