2

ビューで剣道グリッドを使用しようとしています。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 にフォーカスを適用しようとしましたが、うまくいきませんでした。読みやすくするために、剣道グリッドを生成するコードはスキップしました。ありがとう。

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 にキーボード フォーカスを与え、それにキーボード イベント ハンドラをアタッチするにはどうすればよいですか? を参照してください。 Jquery .focus() は、div の tabindex 属性がないと機能しません

更新しました

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 に答える