如何在jqGrid行更改为编辑模式时禁用自动对焦

时间:2015-10-30 08:09:38

标签: 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

1 个答案:

答案 0 :(得分:1)

jqGrid 4.5.2是非常老的版本。它发表于2。5年前。 editRow支持从版本4.7开始的focusField参数。如果可以是jqGrid 4.7中的布尔值或数字(列索引)。 Free jqGrid允许使用String(列名),从4.10.0开始,Event或DOM元素作为focusField参数的值(请参阅{{3} }和the answer)。

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

的循环后添加以下代码
editRow

$("#" + ids[0]) .find("input,textarea,select,button,object,*[tabindex]") .filter(":input:visible:not(:disabled)") .first() .focus(); 获取第一行($("#" + ids[0])),然后找到可以拥有焦点的所有子元素,过滤可见和非禁用元素,最后将焦点设置在元素的第一行。