keycode
を取得して処理をしたいと思っています。
以下のようなコードにしたところ、
event.target
は取得できるのですが、KeyCode
がundefined
になってしまいます。
javascript
1$(document).on("keyup",function(event){ 2 console.log(event.target); //取得できている 3 console.log(event.KeyCode); //undefined 4});
なにがいけないのでしょうか。
ブラウザはchromeです。
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
keyCode プロパティ
event.keyCode
では?
(現在では KeyboardEvent#key
が推奨されますが、後方互換性の為に keyCode
プロパティが使用される事はあります)
JavaScript
1console.dir(event);
KeyboardEvent#key
- 4.6.1.1. KeyboardEvent - UI Events (日本語訳)
- KeyboardEvent.key - Web APIs | MDN
- KeyboardEvent.key - Can I use...
廃止された keyCode, witch プロパティ
7. 旧来のキー&マウス属性
この節は規範的ではない。
以下の属性は、廃用にされた。 これらは、[ これらのキーボードイベントが要求される旧来のソフトウェア ]との互換性が要求される UA によってのみ実装されるべきである。
...
したがって,この仕様は、キーボード入力を取り扱うためによく使役されるイベントや属性を規範的に定義しない — 旧来の内容との互換性のために UA 内に在ってもよいが。 作者は、 charCode / keyCode 属性の代わりに key 属性を利用するべきである。
7.2. 旧来の KeyboardEvent 追補的インタフェース
ブラウザによるキーボードのサポートは、伝統的に 3 個の場当たり的な属性[ keyCode, charCode, UIEvent の which ]に依拠している。
これらの属性は、いずれも,押されたキーのある側面を表現する数的コードを返す:
- keyCode は,キー自身の index 。
- charCode は, 文字キーの ASCII 値。
- which は,可用な所では文字値/他の場合はキー index 。
keyCode, witch プロパティは UI Events で廃止されましたが、後方互換性が要求されるUAでは実装されるべき、とあります。
両者は同じ立ち位置でありながら、witch プロパティは実装されていないブラウザがある欠点があります(Google Chrome では使用できません)。
JavaScript
1document.addEventListener('keydown', function (event) { 2 console.log('witch' in event, 'keyCode' in event, 'key' in event); // false true true 3}, false);
現状としては、key が使えるなら key を使い、使えないなら keyCode を使うアプローチが安全です。
JavaScript
1document.addEventListener('keydown', function (event) { 2 console.log('key' in event ? event.key : event.keyCode); 3}, false);
Re: qwdcf_mag さん
投稿2018/07/15 09:43
編集2018/07/15 11:14総合スコア18164
0
ググりましょう
…しょうがないですね、今回だけですよ?
今回はjQueryのkeyup時にkeycodeが取れないという質問ですね。
検索結果 (JavaScript keyup keycode)
【備忘録】jQueryのkeyup()でkeycodeを取得するには.which - 社長ブログ
JavaScript
1$("#test_text_box").keyup(function(e) { 2 if (e.which == 13) { 3 foo(); 4 } 5});
これだけで殆ど片付いたようなものですが、一応jQueryの公式サイトも覗いてみましょう。
この方は出来た、コード書いた終わりではなく、公式の参考URLまでバッチリ載せてます。
To determine which key was pressed, examine the event object that is passed to the handler function. While browsers use differing properties to store this information, jQuery normalizes the .which property so you can reliably use it to retrieve the key code. This code corresponds to a key on the keyboard, including codes for special keys such as arrows. For catching actual text entry, .keypress() may be a better choice.
ざっと斜め読みした感じと、ページ下記のサンプルコードにより、どのキーが押下されたかは.which
プロパティを参照するように書いてあります。
この様に、ググって問題解決を行う能力が上がればいろいろとはかどります。
色々検索を行うようにしてみてください。
投稿2018/07/15 09:48
総合スコア21158
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/07/16 05:08
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/07/16 05:07