Kendo 网格:如何在取消当前编辑后将焦点设置回网格单元格
Kendo Grid: How to set focus back to a grid cell after canceling current editing
我正在研究如何覆盖 Kendo 网格的一些默认键盘命令。正如在我的 example 中一样,我正在截取回车键,并希望按照以下代码块中的方式向下移动一个单元格..
if (e.keyCode == 13) { // enter
var current = grid.current();
var index = current.index();
var next = $(current).closest('tr').next('tr');
var td = next.find('td:eq(' + index + ')');
grid.closeCell();
grid.current(td);
current = grid.current();
grid.focus(current);
//current.focus();
return;
}
马上就要上班了。如果我在按下回车键之前处于导航模式,那么一切仍然正常。但是,如果我处于 edit 模式(例如,选择一个单元格,然后按回车键),它会进入一个单元格并返回导航模式,但我似乎没有有正确的重点。左右箭头键不起作用,向上和向下箭头似乎显示焦点在页面上,而不是在网格内。
我尝试过以各种方式调用焦点,但就是无法正常工作。知道我在这里做错了什么吗?任何帮助将不胜感激!
提前致谢
您需要将焦点设置在 table 本身,因为网格的 keydown 事件处理程序绑定到 table:
scope.$on("kendoRendered", function (e) {
var grid = scope.grid;
var elem = $(grid.table);
// attach keydown handler to the table
var newHandler = function (e) {
if (e.keyCode == 13) { // enter
var current = grid.current();
var index = current.index();
var next = $(current).closest('tr').next('tr');
grid.closeCell();
var td = next.find('td:eq(' + index + ')');
grid.current(td);
$(td).closest("table").focus();
}
};
$(elem).on("keydown", newHandler);
});
(demo)
我正在研究如何覆盖 Kendo 网格的一些默认键盘命令。正如在我的 example 中一样,我正在截取回车键,并希望按照以下代码块中的方式向下移动一个单元格..
if (e.keyCode == 13) { // enter
var current = grid.current();
var index = current.index();
var next = $(current).closest('tr').next('tr');
var td = next.find('td:eq(' + index + ')');
grid.closeCell();
grid.current(td);
current = grid.current();
grid.focus(current);
//current.focus();
return;
}
马上就要上班了。如果我在按下回车键之前处于导航模式,那么一切仍然正常。但是,如果我处于 edit 模式(例如,选择一个单元格,然后按回车键),它会进入一个单元格并返回导航模式,但我似乎没有有正确的重点。左右箭头键不起作用,向上和向下箭头似乎显示焦点在页面上,而不是在网格内。
我尝试过以各种方式调用焦点,但就是无法正常工作。知道我在这里做错了什么吗?任何帮助将不胜感激!
提前致谢
您需要将焦点设置在 table 本身,因为网格的 keydown 事件处理程序绑定到 table:
scope.$on("kendoRendered", function (e) {
var grid = scope.grid;
var elem = $(grid.table);
// attach keydown handler to the table
var newHandler = function (e) {
if (e.keyCode == 13) { // enter
var current = grid.current();
var index = current.index();
var next = $(current).closest('tr').next('tr');
grid.closeCell();
var td = next.find('td:eq(' + index + ')');
grid.current(td);
$(td).closest("table").focus();
}
};
$(elem).on("keydown", newHandler);
});
(demo)