我正在使用 jqGrid 4.4.4。我有一个列的日期选择器,它返回今天的日期。我只需要它默认为添加模式弹出窗口的今天日期。但是,当有人内联编辑记录时,当用户单击记录进行内联编辑时,我需要日期不更改为今天的日期。
这会导致数据完整性问题,因为当用户编辑现有记录时,日期会更改为今天的日期。
如何保持通过模式添加新记录的方式,同时防止内联编辑时默认?
以下是编辑选项中带有日期选择器的代码:
{ 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'));
。
此外,您可以考虑使用 editoptions 的 defaultValue
属性。它将在表单编辑的添加对话框中使用。在指定 defaultValue
之后,您可能不需要使用任何 .val(...)
。
顺便说一句,我建议您删除不需要的 key: false
和 index: 'CHK_DT_RCVD'
属性并修复 width: '130px'
到 width: 130
因为 width
的值必须是整数。
关于javascript - jqGrid 禁用内联编辑的日期选择器值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37733461/