DIV要素でのキープレス(またはキーダウン)イベントのキャプチャ


146

(jQueryを使用して)DIV要素のkeypressまたはkey downイベントをどのようにトラップしますか?

DIV要素にフォーカスを与えるには何が必要ですか?


2
divにとって「フォーカス」とはどういう意味ですか?
Jonathon Faust 2010

1
tabindexがあるときにタブ移動する以外のjboydでは、javascriptを使用してそれを見つけ、フォーカスメソッドを呼び出すことができます。
ブレンダンエンリック

2
@Lalchand ...いつか私の答えを受け入れることができますか?:)
helle

回答:


301

(1)tabindex属性を設定します。

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

(2)キーダウンにバインド:

 $('#mydiv').on('keydown', function(event) {
    //console.log(event.keyCode);
    switch(event.keyCode){
       //....your actions for the keys .....
    }
 });

スタートにフォーカスを設定するには:

$(function() {
   $('#mydiv').focus();
});

削除するには-気に入らない場合- divフォーカスの境界線をoutline: noneCSS で設定します。

その他の可能性については、キーコードの表を参照してくださいkeyCode

jQueryの使用を想定したすべてのコード。


43
+1 tabindexは、divを「選択可能」にするための重要なポイントです。jQueryは必要ありません。同じことがAngularでも機能し、(おそらく)プレーンなJavaScriptイベントでも機能します。
Jukka Dahlbom、2014

4
これに対するブラウザのサポートは何ですか?
Knowasilya 2014年

27
tabindexは重要な部分ですが、「0」以外の値に設定しないでください。0を超える値を設定すると、視覚障害のあるユーザーのスクリーンリーダーが台無しになります(ページ上のすべてをスキップし、0を超える任意のtabindexに直接移動します)。tabindex = "0"は「タブ可能」にします。tabindex = "0"で無限要素を持つことができます
zonabi

2
<pre>でも動作します!
dfmiller 2016年

2
優れた!tabindex属性がないのは、おそらくDIVがtabindexを持たない限りフォーカスを受け取ることができないためです。ありがとう!私を助けた!EDIT:と作品はのようによく反応
ヴィニシウスNegrão

6

ここではプレーンJSの例:

document.querySelector('#myDiv').addEventListener('keyup', function (e) {
  console.log(e.key)
})
#myDiv {
  outline: none;
}
<div 
  id="myDiv"
  tabindex="0"
>
  Press me and start typing
</div>


これはどのように質問に答えますか?
Poul Bak

5

tabindex HTML属性は、その要素にフォーカスできるかどうか、および(通常はTabキーを使用して)順次キーボードナビゲーションに参加するかどうか/場所を示します。MDN Webドキュメントを読む完全なリファレンスについては、をください。

jqueryの使用

JavaScriptの使用


1
私は実際にこれがdivのフォーカスが失われたときにfocusoutイベントが発生する問題を探して見つけましたフォーカスが失われたdivスクロールバーをクリックするように言った、単にdivにタブストップを追加することが修正だったので、どうもありがとう
MikeT
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.