javascript - 如何禁用 jqGrid 行更改为编辑模式时的自动焦点

标签 javascript jqgrid

在我的网格中,当单击网格工具栏上的“添加”按钮时,一个新的空行将添加到网格中。此外,所有行都将更改为编辑模式。

我的问题是,当更改为编辑模式时,行会自动聚焦。我将行模式从网格顶部更改为底部。因此,当更改完成时,网格始终聚焦于底部的行。但新的空行位于网格的顶部。因此,如果网格中有很多行,用户将无法看到新的空。

这是我将行更改为编辑模式的函数:

    function Grid_EditMode(event, grid) {
    var g;
    if (grid !== null && grid !== undefined) {
        g = grid;
    } else {
        g = $(this);
    }

    HideFilterRow(g);

    var ids = g.jqGrid('getDataIDs');

    for (var i = 0; i < ids.length; i++) {
        var cl = ids[i];
        g.editRow(cl);
    }

    g.jqGrid('resetSelection');

    $('input[id*=Date]').datepicker();
    $('input[id*=Date]').dateEntry({ spinnerImage: '' });
    //change button status
    $('#pager' + g.attr('id') + " [id*='btnGridAdd']").removeClass('pagerBtn');
    $('#pager' + g.attr('id') + " [id*='btnGridEdit']").removeClass('pagerBtn');
    $('#pager' + g.attr('id') + " [id*='btnGridDelete']").removeClass('pagerBtn');
    $('#pager' + g.attr('id') + " [id*='btnGridReset']").removeClass('pagerBtn');
    $('#pager' + g.attr('id') + " [id*='btnGridEdit']").addClass('pagerBtn');

}

将行更改为编辑模式时有什么方法可以禁用焦点吗?

请注意,此问题仅出现在 IE 上,而不会出现在 chrome 上。我正在使用 jqGrid 4.5.2

最佳答案

jqGrid 4.5.2 是非常旧的版本。它于 2.5 年前出版。 editRow支持focusField从4.7版本开始参数。在 jqGrid 4.7 中,if 可以是 bool 值或数字(列索引)。 Free jqGrid允许使用String (列名称),从 4.10.0 开始,Event或 DOM 元素作为 focusField 的值参数(参见 the answerthis one )。

在您的情况下,可以使用 focusField: true editRow的选项。您只需更改 g.editRow(cl);g.editRow(cl, {focusField: false});如果您使用 jqGrid 4.7 或更高版本。我建议您使用最新版本(4.10.0)的免费 jqGrid。如果您无法升级到较新版本的 jqGrid,那么您可以在最后一次调用 editRow手动将焦点设置到另一个编辑字段。 。您可以在调用 editRow 的循环后面添加以下代码

$("#" + ids[0])
    .find("input,textarea,select,button,object,*[tabindex]")
    .filter(":input:visible:not(:disabled)")
    .first()
    .focus();

$("#" + ids[0])获取第一行( <tr> ),然后查找可以具有焦点的所有子元素,过滤可见且未禁用的元素,最后将焦点设置在元素中的第一个元素上。

关于javascript - 如何禁用 jqGrid 行更改为编辑模式时的自动焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33431315/

相关文章:

javascript - 在 SugarCrm 7.2 中完全加载记录 View 后执行 javascript

javascript - CRM 2013 中的可编辑 GridView

javascript - jqGrid 在屏幕布局中没有正确对齐。缺什么?

jquery - 无法从 jqGrid (jQuery) 中的单元格获取对象

jqgrid - 动态启用分组

javascript - 围绕表单垂直居中页面

javascript - 多系列时间轴 : plot the lines one by one

javascript - 一键式 react JS Parent以调用多个子代的函数

javascript - 使我的 LiveTime 对象成为文字

css - 如何避免 zurb 函数样式覆盖 jqgrid/jquery ui 样式?