此代码的目的是仅包含数组中的日期,并在datepicker中将第一个日期激活为初始日期。
我能够得到数组的第一个键,在这种情况下,我需要作为初始的第一个日期。
我认为问题在于日期格式,因为它解除了对datepicker的配置。
按照我的代码:
JAVASCRIPT
// datepicker
var availableDates = {
"19102017": [
"09:00",
"09:15",
"09:45",
"11:45",
"14:00"
],
"20102017": [
"09:30"
],
"21102017": [
"14:00"
],
"22102017": [
"11:45"
],
"23102017": [
"09:00"
],
"24102017": [
"09:15"
],
"25102017": [
"09:30"
],
"26102017": [
"09:45"
],
"27102017": [
"10:00"
],
"28102017": [
"10:15"
]
};
getMinDate(Object.keys(availableDates)[0]);
function returnavailableDates(){
return availableDates;
}
function getMinDate(date) {
console.log(date);
return date;
}
function checkDateis(d) {
var check = false;
$.each(availableDates, function( key, value ) {
if (d === key) {
check = true;
}
});
if(check) return true;
}
function available(date) {
var dmy = $.datepicker.formatDate('dmyy', date);
var check = checkDateis(dmy);
if (check) {
return [true, "", "Available"];
}
else {
return [false, "", "unAvailable"];
}
}
$("#datepicker").datepicker({
showOtherMonths : true,
selectOtherMonths : true,
minDate : 0,
nextText : '',
prevText : '',
dateFormat : 'dd-mm-yy',
beforeShowDay : available
})
.datepicker('setDate', getMinDate(Object.keys(availableDates)[0]))
答案 0 :(得分:0)
是的,问题是传递给setDate
的日期格式。
您可以在将日期传递给setDate
function formatDate(date) {
return date.slice(0,2) + '-' + date.slice(2,4) + '-' + date.slice(4);
}
$("#datepicker").datepicker({
showOtherMonths : true,
selectOtherMonths : true,
minDate : 0,
nextText : '',
prevText : '',
dateFormat : 'dd-mm-yy',
beforeShowDay : available
})
.datepicker('setDate', formatDate(getMinDate(Object.keys(availableDates)[0])))
答案 1 :(得分:0)
您应该只更改dateFormat
初始选项中的datepicker
:
$("#datepicker").datepicker({
...
dateFormat : 'ddmmyy',
...
})
文档:formatDate()
。
已添加:此外,available()
功能出错:
var dmy = $.datepicker.formatDate('dmyy', date);
应该是:
var dmy = $.datepicker.formatDate('ddmmyy', date);
它现在 ,因为您的所有日期在天和月组件中都有两位数字,但它会失败并显示日期01122017
,例如:此函数将生成1122017
密钥,checkDateis(dmy)
调用将始终返回false
。