2

我试图在我的视图中使用剑道网格,我想在按下回车键后在网格中创建新行。我可以通过编写以下代码来做到这一点:

<div id="GridContainer">
<div id="grid"></div>
</div>

$(document.body).keypress(function (e) {
    if (e.keyCode == 13) {
        var grid = $("#grid").data("kendoGrid");
        grid.addRow();
}
});

问题是,在页面上,每当我按 Enter 键时,它都会创建新行。但我只希望在网格集中时才这样做。我怎样才能做到这一点?我试图将焦点应用于包含网格的 div,但没有运气。为了便于阅读,我跳过了生成剑道网格的代码。谢谢。

4

1 回答 1

3

试试这个,

HTML

<div id="grid" tabindex="0"></div>

或者

<div id="grid" contenteditable="true"></div>

脚本

$(document.body).keypress(function (e) {
    if (e.keyCode == 13 && $("#grid").is(':focus')) {
        var grid = $("#grid").data("kendoGrid");
        grid.addRow();
    }
});

阅读如何将键盘焦点赋予 DIV 并将键盘事件处理程序附加到它? 如果 没有 div 的 tabindex 属性,Jquery .focus() 将无法工作

更新

Focus添加一个之后的div再次row,例如,

$(document.body).keypress(function (e) {
    if (e.keyCode == 13 && $("#grid").is(':focus')) {
        var grid = $("#grid").data("kendoGrid");
        grid.addRow();
        $("#grid").focus();
    }
});
于 2013-07-10T07:07:56.440 回答