繁体   English   中英

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

[英]how to disable the automatic focus on jqGrid row when it is changed to edit mode

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

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

这是我将行更改为编辑模式的功能:

    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从版本4.7开始支持focusField参数。 在jqGrid 4.7中,if可以是Boolean还是Number(列索引)。 免费的jqGrid允许使用String (列名),并且从4.10.0开始,将Event或DOM元素用作focusField参数的值(请参见答案该内容 )。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM