簡體   English   中英

jquery datepicker beforeShowDay工作錯誤的一個月?

[英]jquery datepicker beforeShowDay works for wrong month?

我正在使用jquery的datepicker來選擇日期,我想突出顯示一些日期 - 但我在beforeShowDay遇到了一個奇怪的問題。

當頁面加載時,似乎加載了json數據,但當我點擊輸入框並出現datepicker時,沒有任何內容突出顯示。 單擊前進月份或后退后,將加載上個月的數據(例如,點擊輸入 - >出現日期選擇 - >無高亮 - >下個月點擊 - >突出顯示上個月的數據)...

我已經google了很長時間,檢查數據是否在所有內容之前加載,但不知怎的,這種行為沒有改變。 兩個datepicker都遇到了同樣的問題。

(jquery-ui datepicker 1.10.1,jquery 1.9.1)

每個提示我都很高興!

var resDates;
var done = false;

function markDate(date) {
    var ret = [true, 'free'];

    if (!done) {
        $.ajax({
            dataType: "json",
            url: "modules/OutShop/getReservations.php",
            data: {item_id: $("#item-id").val()},
            async: false,
            success: function (dates) {
                resDates = dates;
                done = true;
            }
        });
    }


    $.each(resDates, function(key, value) {
        var d = (date.getFullYear() + "-" + ("0" + date.getMonth()).slice(-2) + "-" + ("0" + date.getDate()).slice(-2));
        if (d == value["day"]) {
        //$("body").append("d: " + d + ", v: " + value["day"] + ", s: " + value["status"] + "  ");
        //$("body").append("s: " + value["status"] + "  ");
            if (value["status"] == "1")
                ret = [false, 'marked'];
            else if (value["status"] == "2")
                ret = [false, 'reserved'];
            else
                ret = [true, 'free'];
        }
    });

    return ret;
}

$(document).ready(function() {


    if (!done) {
        $.ajax({
            dataType: "json",
            url: "modules/OutShop/getReservations.php",
            data: {item_id: $("#item-id").val()},
            async: false,
            success: function (dates) {
                resDates = dates;
                //done = true;
            }
        });
    }

    $("#item-datepicker-min").datepicker({
        showButtonPanel: true,
        defaultDate: +3,
        minDate: +3,
        beforeShowDay: markDate,
        onSelect: function(selectedDate) {
            $("#item-datepicker-max").datepicker("option", "minDate", selectedDate);
        }
    });

    $("#item-datepicker-max").datepicker({
        showButtonPanel: true,
        minDate: +3,
        defaultDate: +6,
        beforeShowDay: markDate,
        onSelect: function(selectedDate) {
            $("#item-datepicker-min").datepicker("option", "maxDate", selectedDate);
        }
    });
});

編輯更多信息:這是我從ajax響應中獲得的一個示例json對象。

[{ “狀態”:3, “日”: “2013年4月10日”},{ “狀態”:3, “日”: “2013-04-11”},{ “狀態”:3“,日“:” 2013年4月12日 “},{” 狀態 “:3,” 日 “:” 2013年4月13日 “},{” 狀態 “:2”,日 “:” 2013年4月10" 日} ,{ “狀態”:2 “日”: “2013-04-11”},{ “狀態”:2 “日”: “2013年4月12日”},{ “狀態”:2“,日“:” 2013" 年4月13日}]

看起來你的月份偏移1,javascript方法date.getMonth()返回從零開始的月份(例如,1月是0,2月是1),你的PHP腳本以正常格式返回日期(Jan是1,2月是2)

檢查一下

所以如果你改變了

var d = (date.getFullYear() + "-" + ("0" + date.getMonth()).slice(-2) + "-" + ("0" + date.getDate()).slice(-2));

var d = (date.getFullYear() + "-" + ("0" + date.getMonth()+1).slice(-2) + "-" + ("0" + date.getDate()).slice(-2));

你應該得到正確的月份

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM