gpt4 book ai didi

javascript - jquery datepicker beforeShowDay 适用于错误的月份?

转载 作者:行者123 更新时间:2023-11-29 15:43:34 26 4
gpt4 key购买 nike

我正在使用 jquery 的日期选择器来选择日期,我想突出显示一些日期 - 但我遇到了一个关于 beforeShowDay 的奇怪问题。

当页面加载时,似乎加载了 json 数据,但是当我单击输入框并出现日期选择器时,没有突出显示任何内容。单击向前或向后的月份后,将加载上个月的数据(例如,单击输入 -> 出现日期选择器 -> 无突出显示 -> 单击下个月 -> 上个月的数据突出显示)...

我已经在谷歌上搜索了很长时间,检查是否在一切之前加载了数据,但不知何故这种行为并没有改变。两个日期选择器都遇到同样的问题。

(jquery-ui 日期选择器 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 对象。

[{"status":3,"day":"2013-04-10"},{"status":3,"day":"2013-04-11"},{"status":3,"day":"2013-04-12"},{"status":3,"day":"2013-04-13"},{"status":2,"day":"2013-04-10"},{"status":2,"day":"2013-04-11"},{"status":2,"day":"2013-04-12"},{"status":2,"day":"2013-04-13"}]

最佳答案

看起来您的月份偏移了 1,javascript 方法 date.getMonth() 返回从零开始的月份(例如,一月是 0,二月是 1)并且您的 PHP 脚本以正常格式返回日期(一月是1、二月是二)

检查 this

如果你改变

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));

你应该得到正确的月份显示

关于javascript - jquery datepicker beforeShowDay 适用于错误的月份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15346321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com