0

両方の 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);
        }
    });
4

1 に答える 1

0

操作を続行する前に、availableDays 関数の戻り値を変数に入れ、値をテストする必要があります。

onSelect: function (dateText, inst) {
var blackouts = unavailableDays(date);
    if(blackouts==true){
        $("#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);
    }
}
于 2012-04-05T21:06:05.943 に答える