传递PHP变量后日历保持选定日期

时间:2015-08-16 21:06:28

标签: javascript php

我使用下面的日历代码进行了一些小修改,无论如何,当我选择日期时,日历会突出显示所选日期,但是当我通过此选定日期并重定向网址时,日历会丢失所选日期和它不再在下一页上突出显示,因为我已经传递了变量,如何编辑日历代码并将其传回给所选变量,以便所选日期在下一页的日历中已知并突出显示(相同日历) )。

        g_globalObject = new JsDatePick({
        useMode:1,
        isStripped:true,
        target:"div3_example"
    });     

    g_globalObject.setOnSelectedDelegate(function(){
        var obj = g_globalObject.getSelectedDay();

        if (obj.month.toString().length < 2) {
            var date = obj.year + "-0" + obj.month + "-" + obj.day
            //alert(date);
            window.top.location.href = '..index.php?pDate=' + date;
        }else
        {
            var date = obj.year + "-" + obj.month + "-" + obj.day
            //alert(date);
            window.top.location.href = '..index.php?pDate=' + date;
        }

    });

1 个答案:

答案 0 :(得分:0)

jsDatePick有一个名为selectedDate的配置选项,可用于预先选择日期。我们可以解析查询字符串并在初始化时提供该选项。

可悲的是,事实证明selectedDate是错误的,并且在使用时会完全禁用日期选择器。 15437091/jsdatepick-using-a-selected-date在用户Cesar引用selectedDate - Problem im jsDatePick JavaScript - Modul (javascriptcalendar.org)(德语)的答案中有一个修复,需要修改来源。但是,不是这样做,我们可以使用一些包装:

// duplicate original function
JsDatePick.prototype.setConfiguration_original = JsDatePick.prototype.setConfiguration;

// redefine function
JsDatePick.prototype.setConfiguration = function() {

    // call original function
    JsDatePick.prototype.setConfiguration_original.apply(this, arguments);

    // use "selectedDate"
    if(this.oConfiguration.selectedDate){
        this.currentYear          = this.oCurrentDay.year;
        this.currentMonth         = this.oCurrentDay.month;
        this.currentDay           = this.oCurrentDay.day;
        this.selectedDayObject    = this.oConfiguration.selectedDate;
        this.flag_aDayWasSelected = true;
    }
}

// parse query string for selected date
var pDate = location.search.match(/[\?&]pDate=(\d+)-(\d+)-(\d+)/);
pDate = pDate
    ? {year:parseInt(pDate[1]), month:parseInt(pDate[2]), day:parseInt(pDate[3])}
    : null;

var g_globalObject = new JsDatePick({
    useMode:1,
    isStripped:true,
    selectedDate: pDate,
    target:"div3_example",
});