重複の可能性:
ExtJS 4とその新しいMVC:グリッド:キーの処理方法は?
Ext.grid.Panelにキーリスナーを追加する必要があります(つまり、スペース、左、右のキーリスナー)。実際、Panelで「keyup」またはその他のキー関連のイベントをキャッチする必要があります。私はすべてを試しましたが、成功しませんでした。誰かが何か考えを持っていますか?Extjs4を使用しています。
重複の可能性:
ExtJS 4とその新しいMVC:グリッド:キーの処理方法は?
Ext.grid.Panelにキーリスナーを追加する必要があります(つまり、スペース、左、右のキーリスナー)。実際、Panelで「keyup」またはその他のキー関連のイベントをキャッチする必要があります。私はすべてを試しましたが、成功しませんでした。誰かが何か考えを持っていますか?Extjs4を使用しています。
コンポーネントが主要なイベントを直接公開しない場合は、少し作業が必要です。これは最善の方法ではないかもしれませんが、これが始まりです。
div
最初の秘訣は、タブ インデックスがない限りキー イベントを発生させないDOM 要素などを知っておくことです。だから、次のようなことをしてくださいgrid.getEl().set({tabindex: "0"})
。
これで、グリッド要素がキー イベントを発生させます。次のステップは、グリッドを対象とする KeyMap を追加することです。これを行うにはいくつかの方法がありますが、ここに良い方法があります。
grid.getEl().addKeyMap({
eventName: "keyup",
binding: [{
key: Ext.EventObject.SPACE,
fn: function(){ console.log("Space key pressed"); }
},{
key: [Ext.EventObject.LEFT, Ext.EventObject.RIGHT],
shift: true,
fn: function(){ console.log("Left or right pressed while pressing shift"); }
}]
});
基本的にbinding
は、リッスンする 1 つ以上のキーとトリガーする関数を指定するオブジェクトの配列です。Ext.util.KeyMapのドキュメントを確認すると、詳細を知ることができます。
上記の使用に注意してくださいeventName
。KeyMap ごとに 1 つのタイプのイベントを設定できます。したがって、keydown イベントと keyup イベントの両方にバインドする場合は、同じ要素に 2 つの KeyMap が必要です。
手始めに、KeyMapを見てください。