datepicker数组初始

时间:2017-10-01 15:55:45

标签: javascript jquery datepicker

此代码的目的是仅包含数组中的日期,并在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]))

小提琴测试:https://jsfiddle.net/n2n4udkf/

2 个答案:

答案 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