Javascript 处理这些上下左右和输入剑道网格键?

Javascript 处理这些上下左右和输入剑道网格键?,javascript,kendo-ui,kendo-grid,Javascript,Kendo Ui,Kendo Grid,我使用剑道格网 我需要重写键盘事件来修改网格导航的行为。如果用户按键盘上的向上或向下键时,我想用焦点(而不仅仅是现在的焦点)更改所选行 这是我的网格和脚本: <div id="my-grid"> <div class="widget" id="grid" kendo-grid data-navigatable="true" data-scrollable='{"virtual":"true"}' ... </

我使用剑道格网

我需要重写键盘事件来修改网格导航的行为。如果用户按键盘上的向上或向下键时,我想用焦点(而不仅仅是现在的焦点)更改所选行

这是我的网格和脚本:

<div id="my-grid">
    <div class="widget" id="grid" kendo-grid
        data-navigatable="true"
        data-scrollable='{"virtual":"true"}'
        ...
    </div>
</div>

<script type="text/javascript">
    $("#my-grid").keypress(function () {
        console.log("Handler for .keypress() called.");
    });
</script>


将您的事件附加到网格的tbody元素

  $('#my-grid').data().kendoGrid.tbody.on('keydown',function(){alert('foo')})

我已经做了一个工作示例,因此在剑道网格批量编辑模式下,当用户在剑道列的可编辑文本框中时,用户单击上/下箭头在行之间上/下移动并选择相应的行:

<code>

            $("#LatestLinesGrid").on("keydown", "#FinalShip", function (e) {

                var arrows = [38, 40]; // Down and Up arrow keys
                var key = e.keyCode;

                if (arrows.indexOf(key) >= 0) {
                    //alert('arrow' + key);
                    e.preventDefault();
                    debugger;

                    var grid = $("#LatestLinesGrid").data("kendoGrid");

                    var row = $(this).closest("tr");
                    //get current row index
                    var rowIdx = $("tr", grid.tbody).index(row);

                    // to check first row and proceed further else exit - index start from 0 (first row)
                    // 38 - Up key, 40 - Down key
                    if (key == 38 && rowIdx == 0) {
                        return false;
                    }

                    //get total number of records in grid
                    var count = grid.dataSource.total();

                    // to check last row and proceed further else exit - index start from 0 (first row)
                    if (key == 40 && rowIdx == (count-1)) {
                        return false;
                    }

                    this.blur();
                    row.removeClass('k-state-selected');

                    row.trigger("change");

                    if (key == 40) {
                        var nextCell = $(this).closest("tr").next("tr[role='row']").find("td").eq(10);
                        $(this).closest('tr').next().addClass('k-state-selected');
                    }
                    else if (key == 38) {
                        var nextCell = $(this).closest("tr").prev("tr[role='row']").find("td").eq(10);
                        $(this).closest('tr').prev().addClass('k-state-selected');
                    }

                    var id = grid.dataItem(grid.select());

                    grid.closeCell();
                    grid.editCell(nextCell);

                    //alert(id.PlanID);
                    LatestLine_PreSelect();
                }
            });

在剑道版本v2014.2.926上,我不得不使用“剑道里德.table”而不是“剑道里德.tbody”