For such kind of requirements can use following code snippets to navigate user.
$(document).ready(function () { $("#Grid").on("keyup", 'tr', function (event) { navigateColorGrid(event); }); });
function navigateColorGrid(e) { if (e.keyCode == 9) { event.stopPropagation(); event.stopImmediatePropagation(); event.preventDefault(); //Prevent default tab key function var eCell = $(e.target).closest('td'); var currentIndex = eCell.index(); var currentIndexRow = $(e.target).closest('tr').index(); var dataGrid = $('#Grid').data().kendoGrid; var currentRow = $(e.target).closest('tr'); eCell = $(currentRow).find('td:eq(' + currentIndex + ')'); if (invalidCells.length > 0) { tabToNextCell(currentIndexRow, currentIndex); } else { setTimeout(function () { var grid = $("#Grid").data("kendoGrid"); if (eCell != null) { grid.editCell(eCell); var inputText = eCell.find("input").length; var cPosition = inputText - 1; } }, 10); } } }
function tabToNextCell(currentIndexRow, currentIndex) { var eCell = $("#Grid").children().find("tbody").find("tr:eq(" + currentIndexRow + ")").find("td:eq(" + currentIndex + ")"); var cellLocation = getNextinvalidCell(currentIndexRow, currentIndex);
if (cellLocation.length > 0) { var rowNumber = cellLocation[0].rowIndex; var cellNumber = cellLocation[0].cellIndex; eCell = $("#Grid").children().find("tbody").find("tr:eq(" + rowNumber + ")").find("td:eq(" + cellNumber + ")"); } setTimeout(function () { var grid = $("#Grid").data("kendoGrid"); if (eCell != null) { grid.editCell(eCell); eCell.select(); } }, 10); }
Following function used array called “InvalidCells”, when updating cells with results save invalid cells in array use that array to determine nearest invalid cell in the grid.
function getNextinvalidCell(currentIndexRow, currentIndex) { //Current row contains another invalid cell var cellLocation = []; var invalidCell = $.grep(invalidCells, function (cell) { return cell.rowIndex == currentIndexRow && cell.cellIndex > currentIndex; }); if (invalidCell.length > 0) {
var sortedInvalidCells = invalidCell.sort(function (a, b) { return a.cellIndex - b.cellIndex; }); cellLocation.push({ rowIndex: sortedInvalidCells[0].rowIndex, cellIndex: sortedInvalidCells[0].cellIndex }) } return cellLocation; }