我正在尝试在视图中使用kendo网格,我想在按Enter键后在网格中创建新行。我可以通过编写以下代码来完成此任务:
<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,但没有运气。为了便于阅读,我跳过了代码来生成kendo网格。感谢。
答案 0 :(得分:3)
试试这个,
<强> HTML 强>
<div id="grid" tabindex="0"></div>
或
<div id="grid" contenteditable="true"></div>
<强> SCRIPT 强>
$(document.body).keypress(function (e) {
if (e.keyCode == 13 && $("#grid").is(':focus')) {
var grid = $("#grid").data("kendoGrid");
grid.addRow();
}
});
阅读How can I give keyboard focus to a DIV and attach keyboard event handlers to it? 和 Jquery .focus() not working without tabindex attribute of div
<强>更新强>
添加Focus
之后再次{p> div
row
,
$(document.body).keypress(function (e) {
if (e.keyCode == 13 && $("#grid").is(':focus')) {
var grid = $("#grid").data("kendoGrid");
grid.addRow();
$("#grid").focus();
}
});