質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

11361閲覧

keyCode の値が取得できない

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2018/07/15 09:31

keycodeを取得して処理をしたいと思っています。
以下のようなコードにしたところ、
event.targetは取得できるのですが、KeyCodeundefinedになってしまいます。

javascript

1$(document).on("keyup",function(event){ 2 console.log(event.target); //取得できている 3 console.log(event.KeyCode); //undefined 4});

なにがいけないのでしょうか。

ブラウザはchromeです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

keyCode プロパティ

event.keyCode では?
(現在では KeyboardEvent#key が推奨されますが、後方互換性の為に keyCode プロパティが使用される事はあります)

JavaScript

1console.dir(event);

KeyboardEvent#key

廃止された 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
think49

総合スコア18164

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/07/16 05:07

ありがとうございます! 小文字にしたら問題なく動きました。jsはどうも慣れず色々なところでハマってしまいます。 仕様変更についての情報もありがとうございます。
guest

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までバッチリ載せてます。

.keyup() - jQuery

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

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

think49

2018/07/15 11:17

witchプロパティの使用は好ましくないと思います(理由は回答欄に書きました)。 こういうことがあると、jQuery API DocumentもWeb標準系のドキュメントとしては信用できないですね…。
退会済みユーザー

退会済みユーザー

2018/07/16 05:08

ありがとうございます! 一応調べた上でなのですが、大文字小文字でハマっていたようです。jsがどうもなかなか慣れずに色々なところでミスります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問