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

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

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

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

jQuery

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

Q&A

解決済

1回答

4941閲覧

tabindexを設定した擬似ボタン(div要素)をfocus状態且つenterキー操作で実行する方法

SugiuraY

総合スコア317

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2018/07/17 13:14

編集2018/07/17 13:15

前回の質問

前回のご質問にさらにという形になるのですが、下記のようなtabindexを設定した
擬似的なdivのbutton要素について、focus状態になっている時に、enterキーを操作することで
ボタンを実行することは可能なのでしょうか?

イベンドで.focusとkeypress(keycode=13)を同時に設定することが
できるかを調べても見つけることができなかったため、ご質問をさせていただきました。

よろしくお願いもうし上げます。

html

1 <div tabindex="0"> 2 button 3 </div>

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

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

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

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

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

guest

回答1

0

ベストアンサー

調査方法

html

1<!DOCTYPE HTML> 2<html lang="ja"> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head> 7 <body> 8 <div id="sample" tabindex="0"> 9 button 10 </div> 11 <script type="text/javascript"> 12 var div = document.getElementById('sample'); 13 console.log(div); 14 </script> 15 </body> 16</html>

このような最小限のファイルを作成し、Chromeのデベロッパーツールを開きます。
「Element」を選択し、div を選択。
「Properties」を選択すると、選択したdivが持つプロパティが表示される。
「HTMLElememt」を展開すると、要素が持っているイベントが出てきます。
この中に、「Keyup」「Keypress」などがあります。

イメージ説明

html

1<!DOCTYPE HTML> 2<html lang="ja"> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head> 7 <body> 8 <div id="sample" tabindex="0"> 9 button 10 </div> 11 <script type="text/javascript"> 12 var div = document.getElementById('sample'); 13 console.log(div); 14 15 div.addEventListener('keyup', function (e) { 16 console.log(e); 17 }); 18 </script> 19 </body> 20</html>

HTMLに上記のように追記し、keyup の動きを調べます。

ページを開き、div にフォーカスがないときに、Enterを押してみると、console.log(e); が反応しないことが確認できます。

イメージ説明

次に、div にフォーカスがあるときに、Enterを押してみると、

イメージ説明

反応しました。

フォーカスがあるときしか、keyupは反応しないので、基本路線はこれで良いと言うことがわかる。

ではEnterキーのキーコード「13」をどうやってとるのか。

イメージ説明

「KeyboardEvent」を展開すると、「keyCode: 13」と言う表記があるので、
以下のようにHTMLを編集すれば良いと言うことがわかります。

html

1<!DOCTYPE HTML> 2<html lang="ja"> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head> 7 <body> 8 <div id="sample" tabindex="0"> 9 button 10 </div> 11 <script type="text/javascript"> 12 var div = document.getElementById('sample'); 13 console.log(div); 14 15 div.addEventListener('keyup', function (e) { 16 console.log(e.keyCode); 17 }); 18 </script> 19 </body> 20</html>

投稿2018/07/17 21:16

編集2018/07/17 21:18
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

SugiuraY

2018/07/17 22:59

Kosuke_Shibuya様 おはようございます。思考のプロセスまで詳細にご教示いただきありがとうございます。フォーカス状態にあるときにkeyupイベントを拾ってくれることを確認でき、keyCode==13の時に処理を実行することで、無事解決することができました。 そして、何よりもご教示いただいたような方法でデベロッパーツールを使いながら、一つずつ動作や状態を確認していくことの重要性を改めて学ぶことができました。 お恥ずかしながらdiv要素にもkey関係のプロパティが備わっていることを初めて知ったのですが、このような調べ方で一目瞭然ですね。自分でも調べる力に対する大きなヒントをいただきました。 心より、ご解説に感謝を申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問