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

jqGrid Disable Date Picker Value for Inline Edit

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

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

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

这是编辑选项中带有日期选择器的代码:

 { 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'));
                }
             }
        },

首先你应该在setTimeout里面初始化datepicker。问题:dataInit 可能(将)被称为 ,然后 element 被放置在 HTML 页面上(element 已断开连接DOM 个元素)。

setTimeout 内部,您可以遍历 element 的父元素并尝试找出该元素是否在 tr.jqgrow 内部。如果 $(element).closest("tr.jqgrow").length > 0 则日期选择器在内联编辑(或单元格编辑)中。在这种情况下你不应该使用 .val(moment(new Date()).format('MM/DD/YYYY'));

另外你可以考虑使用defaultValue 属性 of editoptions。它将在表单编辑的添加对话框中使用。在指定 defaultValue.

之后,您可能不需要使用任何 .val(...)

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