其他人已经问过这个问题,但是我找不到任何好的答案。需要jqGrid内联编辑才能将焦点转到单击单元格
随着jqGrid的和在线编辑,是有可能得到的是选择在该行的第一个单元格,而不是专注于电池?在onCellSelect
处理程序中,我可以移动焦点,但它会立即返回到行上的第一个单元格。
Firebug在我跳出onCellSelect
回调时一直崩溃,所以我没有对jqGrid源码本身做出多少进展。
其他人已经问过这个问题,但是我找不到任何好的答案。需要jqGrid内联编辑才能将焦点转到单击单元格
随着jqGrid的和在线编辑,是有可能得到的是选择在该行的第一个单元格,而不是专注于电池?在onCellSelect
处理程序中,我可以移动焦点,但它会立即返回到行上的第一个单元格。
Firebug在我跳出onCellSelect
回调时一直崩溃,所以我没有对jqGrid源码本身做出多少进展。
我在关闭的问题here上回答。如果您使用双击进入内联编辑,您可以直接使用我以前的答案。
如果您使用选择行(onSelectRow
回调),您将有问题检测被单击的单元格,因为当前版本的jqGrid没有事件对象作为参数。 github上的最后一个版本的jqGrid已经具有参数(请参阅my suggestion和the fix),并且您可以在onSelectRow
中执行相同操作。
如果需要使用发布的版本4.3.1的jqGrid,需要将焦点设置在onSelectRow
回调可以使用另外beforeSelectRow
回调到最后e.target
缓存在一个变量和使用它的onSelectRow
内。
我用这个代码(4.4.1的jqGrid)
onSelectRow: function (rowid, status, e) {
var setFocusToCell = function(e) {
if(!e || !e.target) return;
var $td = $(e.target).closest("td"), $tr = $td.closest("tr.jqgrow"), ci, ri, rows = this.rows;
if ($td.length === 0 || $tr.length === 0 || !rows) return;
ci = $.jgrid.getCellIndex($td[0]);
ri = $tr[0].rowIndex;
$(rows[ri].cells[ci]).find("input,select").focus();
}
setFocusToCell(e);
}
我莫名其妙地成功通过DBLCLICK事件附加表中的每一个TD做到这一点,我知道这是不是最好的方法,但你可以自由优化它的方式,你也可以忽略只用于测试的setTimeout。
$("#jqGrid").on("dblclick", "td", function (event) {
// setTimeout(function() {
console.log(this);
$(event.target).find("input,select").focus();
// }, 0);
});
希望这会帮助你。