0

Jquery UI datepicker カレンダーから特定の日付を無効にしようとしています。

私の問題は、 disableDays 関数によってチェックされた最後の日付のみが無効になっており、すべてが無効になっているわけではないということです。最後にチェックした日付のみを無効にする理由。この関数から別の応答を返す必要がありますか?

完全なスクリプト:

var disabled_days = new Array(); // Array of Date() objects


$('.date-picker-day').live('click', function () {
    $(this).datepicker({
        changeMonth: true,
        changeYear: true,
        showButtonPanel: true,
        dateFormat: 'dd',
        beforeShow: function () {
            [..]
        },
        beforeShowDay: disableDays,
        onClose: function (dateText, inst) {

        }

    }).focus();
});

function disableDays(date) {
    var ret = false;
    $.each(disabled_days, function (k, v) {
        if (v.getDate() == date.getDate()) {
            console.log(v + 'vs.' + date + ' invalid');
            ret = [false];
        } else {
            ret = [true];
        }
    });

    return ret;
}  
4

1 に答える 1

0

disabled_days否定的な一致が見つかったらすぐに、配列のそれ以上の繰り返しを停止する必要があります。そうしないと、次の値の繰り返しで日付が一致せず、ret再びtrue値を取得します

function disableDays(date) {
    var ret = false;
    $.each(disabled_days, function (k, v) {
        if (v.getDate() == date.getDate()) {
            console.log(v + 'vs.' + date + ' invalid');
            ret = [false];
            return false;
        } else {
            ret = [true];
        }
    });
    return ret;
}

デモ:フィドル

于 2013-08-29T12:07:36.740 に答える