在我的网格中,当单击网格工具栏上的“添加”按钮时,一个新的空行将添加到网格中。此外,所有行都将更改为编辑模式。
我的问题是,当更改为编辑模式时,行会自动聚焦。我将行模式从网格顶部更改为底部。因此,当更改完成时,网格始终聚焦于底部的行。但新的空行位于网格的顶部。因此,如果网格中有很多行,用户将无法看到新的空。
这是我将行更改为编辑模式的函数:
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 answer 和 this 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/