我正在使用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'));
}
}
},
答案 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'));
。
此外,您可以考虑使用editoptions的defaultValue
属性。它将用于表单编辑的“添加”对话框。在指定.val(...)
之后,您可能不需要使用任何defaultValue
。
顺便说一句,我建议您删除不需要的key: false
和index: 'CHK_DT_RCVD'
属性,并将width: '130px'
修复为width: 130
,因为{{1}的值必须是整数。