【问题标题】:how to check whether a div is focused or not in jquery?如何检查 div 是否在 jquery 中聚焦?
【发布时间】:2013-07-10 07:01:07
【问题描述】:

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

<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,但没有运气。为了便于阅读,我跳过了生成剑道网格的代码。谢谢。

【问题讨论】:

    标签: jquery asp.net-mvc-3 html kendo-grid


    【解决方案1】:

    试试这个,

    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();
        }
    });
    

    阅读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

    更新

    Focusdiv在添加row之后再次,就像,

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

    【讨论】:

    • 你能帮我多一点吗?每次按 Enter 时,我都需要创建新行。但是使用当前代码,按下一次后它不会创建任何行。如果我没记错的话,它失去了网格的焦点。如何保持专注?
    • 意味着您希望rowadditionfire 仅一次?
    • 不,我想在每次用户按下回车按钮时触发该事件,但仅当他使用网格时,即网格处于焦点。
    • 上面的代码可以工作when你的div#gridfocused
    • 测试上面我已经做了修改,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多