jqGrid禁用内联编辑的日期选择器值

时间:2016-06-09 18:20:12

标签: javascript jquery jqgrid

我正在使用jqGrid 4.4.4。我有一个列的日期选择器,它返回今天的日期。我只需要默认为今天添加模式弹出窗口的日期。但是,当有人正在内联编辑记录时,我需要将日期更改为当前用户点击记录以进行内联编辑的日期。

这会导致数据完整性问题,因为当用户编辑现有记录时,日期会更改为今天的日期。

如何保持通过模态添加新记录的方式,同时防止在内联编辑时出现默认值?

以下是编辑选项中带有datepicker的代码:

 { key: false, name: 'CHK_DT_RCVD', width: '130px', index: 'CHK_DT_RCVD',
            editable: true, formatter: 'date',
            formatoptions: { newformat: 'm-d-Y' },
            formoptions: {},
            editrules: { custom: true, custom_func: validDateCheck },

            editoptions:
            {

                dataInit: function (element)
                {
                    $(element).datepicker({

                        id: 'entryDate_Datepicker',
                        dateFormat: 'mm-dd-yy',
                        maxDate: new Date(2020, 0, 1),
                        showOn: 'focus'
                    }).val(moment(new Date()).format('MM/DD/YYYY'));
                }
             }
        },

1 个答案:

答案 0 :(得分:1)

首先,您应该在datepicker内初始化setTimeout。问题:在 dataInit放置在HTML页面上之前element可以(将会)被称为element是断开连接的DOM元素)。

setTimeout内,您可以越过element的父母,并尝试查明该元素是否在tr.jqgrow内。如果$(element).closest("tr.jqgrow").length > 0则日期选择器位于内联编辑(或单元格编辑)之内。你不应该在案件中使用.val(moment(new Date()).format('MM/DD/YYYY'));

此外,您可以考虑使用editoptionsdefaultValue属性。它将用于表单编辑的“添加”对话框。在指定.val(...)之后,您可能不需要使用任何defaultValue

顺便说一句,我建议您删除不需要的key: falseindex: 'CHK_DT_RCVD'属性,并将width: '130px'修复为width: 130,因为{{1}的值必须是整数。