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;
}
No comments:
Post a Comment