jqgrid和datepicker控件为新记录提供错误

时间:2013-08-23 20:33:55

标签: jquery-ui jqgrid jquery-ui-datepicker

我被jqgrid绑定,json从ajax返回。 json的日期格式如下

11/1/2013 12:00:00 AM

在colmodel中我指定了以下

{ name: 'datecol', index: 'SignDate', width: '200', jsonmap: 'cell.SignDate', editable: true, sorttype: 'date',
                    editable: true, formatter: 'date', formatoptions: {
                        srcformat: 'm-d-Y H:i:s',
                        newformat: 'Y-M-d'
                    },
editoptions: { dataInit: initDateEdit },
initDateEdit = function(elem) {
                setTimeout(function() {
                    $(elem).datepicker({
                        formatter: 'date', formatoptions: {
                            srcformat: 'm-d-Y H:i:s',
                            newformat: 'yy-M-d'
                        }
                        autoSize: true,
                        showOn: 'button', // it dosn't work in searching dialog
                        changeYear: true,
                        changeMonth: true,
                        showButtonPanel: true,
                        showWeek: true
                    });
                    //$(elem).focus();
                },100);
            }

这会在网格中正确显示日期

2013-Nov-01

但是当我点击addnew记录时,弹出窗口出现,当我选择日期并点击提交时,在网格中,新记录显示

NaN-undefined-NaN
日期栏中的

。这有什么不对?

当我使用此链接中给出的相同代码时 http://www.ok-soft-gmbh.com/jqGrid/LocalFormEditing.htm

编辑工作正常,但当我添加新行时,日期为NaN-undefined-NaN

请帮忙。

1 个答案:

答案 0 :(得分:1)

我认为您所描述的问题的原因是您使用的jQuery UI Datepicker的错误参数。您使用的formatterformatoptions参数datepicker不存在。相反,您应使用dateFormat选项,其格式为here

更新:您描述的问题的主要原因是您使用的日期格式错误。重要的是要了解srcformat的{​​{1}}和newformat应该PHP date format,但jQuery UI Datepicker支持另一种格式,例如here。输入数据formatoptions包含日期和时间。另一方面,jQuery UI Datepicker仅支持日期。因为您使用11/1/2013 12:00:00 AM,所以我想您只想忽略日期的时间部分。如果我建议你使用

newformat: 'yy-M-d'

而不是

formatter: 'date',
formatoptions: {
    srcformat: 'm/d/Y',
    newformat: 'Y-m-d'
}
你目前使用的

。下一个问题是jQuery UI Datepicker的formatter: 'date', formatoptions: { srcformat: 'm-d-Y H:i:s', newformat: 'Y-m-d' } 选项。您必须使用对应dateFormat但使用正确格式的格式(描述为here)。如果是srcformat,您应该使用srcformat: 'm/d/Y'而不是dateFormat: 'm/d/yy'中使用的dateFormat: 'yy-m-dd'

jsfiddle demo现在可以正常使用。