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

标签 javascript jquery jqgrid

我正在使用 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'));

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

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

关于javascript - jqGrid 禁用内联编辑的日期选择器值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37733461/

相关文章:

javascript - 剑道网格 : how add colorpicker

javascript - 在 .net MVC 应用程序中构建 javascript

jquery - jqgrid 获取所有网格列名称

javascript - 当对象名称是动态时解析 JSON 对象的有效方法?

php - 使用post方法发送跨域请求

jquery - 子div位置绝对父高度不起作用

javascript - 通过 PushState 和 Jekyll 使用 AJAX 加载

jquery - jqgrid 中带有 JSON 数据的树形网格

javascript - JQGrid 不改变页面

javascript - 为什么此声音会在webaudio api中不断重新触发?