带有jquery选项卡和jqgrid的Jquery datepicker问题

时间:2013-11-20 20:35:24

标签: javascript jquery jsp jqgrid datepicker

我的JSP页面有标签。每个选项卡都加载一个jqgrid(在所有三个选项卡中加载相同的JSP)。我在jqgrid和日期字段中都有一个过滤器,我正在使用一个日期选择器。

datepicker在第一个标签中工作正常但是当我尝试在其他标签中的datepicker中点击“上一个”/“下一个”时,它会跳到1900年。请参阅下面的图片:

日期选择器在第一个标签中按预期工作: enter image description here

日期选择器在第二个标签中点击prev时跳至1899: enter image description here

我尝试在 jquery-ui-1.10.0.custom.js 中调试代码

/* Adjust one of the date sub-fields. */
_adjustDate: function(id, offset, period) {
    var target = $(id),
        inst = this._getInst(target[0]);
    console.dir(inst);
    if (this._isDisabledDatepicker(target[0])) {
        return;
    }
    this._adjustInstDate(inst, offset +
        (period === "M" ? this._get(inst, "showCurrentAtPos") : 0), // undo positioning
        period);
    this._updateDatepicker(inst);
},

我为这两种情况得到了以下输出:

第一个标签:

LOG: {
    id : "gs_vpReportDate",
    input : [object Object],
    selectedDay : 20,
    selectedMonth : 10,
    selectedYear : 2013,
    drawMonth : 10,
    drawYear : 2013,
    inline : false,
    dpDiv : [object Object],
    settings : [object Object],
    append : [object Object],
    trigger : [object Object],
    lastVal : "",
    currentDay : 0,
    currentMonth : 0,
    currentYear : 0,
    yearshtml : null,
    _keyEvent : false
} 

第二个标签:

LOG: {
    id : "gs_vpReportDate",
    input : [object Object],
    selectedDay : 0,
    selectedMonth : 0,
    selectedYear : 0,
    drawMonth : 0,
    drawYear : 0,
    inline : false,
    dpDiv : [object Object],
    settings : [object Object],
    append : [object Object],
    trigger : [object Object]
} 

为什么会出现这种奇怪的行为?

其他信息: id是动态分配的。

下面是我的jqgrid专栏:

{ name: 'vpReportDate', index: 'vpReportDate',datefmt:"m/d/Y", sorttype:"date", width: 65, searchoptions:{dataInit:showDatePicker}, sortable:true }

function showDatePicker(elem) {
    $(elem).datepicker({dateFormat:'mm/dd/yy', changeYear: true, changeMonth: true}).change(function() {
        $("#dasWorkQueueGrid_" + activeTabId)[0].triggerToolbar();
    });
};

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。问题的根本原因是,在第二个选项卡的点击上加载了何时网格,第一个网格已经存在于DOM中,这导致了所有问题。所以我在加载网格之前做了什么我正在调用gridDestroy来销毁DOM中存在的所有网格 -

$("[id^=dasWorkQueueGrid_]").jqGrid('GridDestroy');
  • 我在jquery选择器中使用通配符来识别所有网格。

然后加载网格:

$("#dasWorkQueueGrid_" + activeTabId).jqGrid({
   *** Grid Code ***
    });