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: false
和 index: 'CHK_DT_RCVD'
属性并将 width: '130px'
修复为 width: 130
因为 [=27 的值=] 必须是整数。
我正在使用 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: false
和 index: 'CHK_DT_RCVD'
属性并将 width: '130px'
修复为 width: 130
因为 [=27 的值=] 必须是整数。