簡體   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