###質問
例えば、textareaなどにaやbなどといったキーを押すと文字が出力されますよね。それと別にshiftやaltや十字キーをおしてもtextareaの中身は変わりません。
この2つのタイプを判定する方法はありますか?
※Enterキーやスペースキーはtextareaの中身が変化するので前者のタイプだとします。

回答3件
あなたの回答
tips
プレビュー
JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。
jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。
HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。
CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。
Q&A
解決済
3回答
2095閲覧
退会済みユーザー
総合スコア0
JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。
jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。
HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。
CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。
0グッド
0クリップ
投稿2016/12/21 10:46
###質問
例えば、textareaなどにaやbなどといったキーを押すと文字が出力されますよね。それと別にshiftやaltや十字キーをおしてもtextareaの中身は変わりません。
この2つのタイプを判定する方法はありますか?
※Enterキーやスペースキーはtextareaの中身が変化するので前者のタイプだとします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
網羅的に全て取りたいというケースでなければkeydown
イベントで十分です。
W3CでKeyboardイベントが取得出来るように定義されています
私も似たような要件があって、気になったのでこんなのを作って確認したことがあります。
良かったら色んなキーをガチャガチャ打ち込んでみてください。
http://rss.romancing.jp/tool/keycode.html
投稿2016/12/21 11:21
総合スコア21403
0
ベストアンサー
これで判定できます
キーコード一覧(稀にブラウザ間で仕様が異なる場合がある)
http://faq.creasus.net/04/0131/CharCode.html
ご参考までに。
html
1<textarea id="sample"></textarea>
javascript
1document.getElementById("sample").onkeydown = function (e) { 2 if (e.shiftKey) { 3 //shiftキーを押されたら 4 } else if (e.ctrlKey) { 5 //controlキーを押されたら 6 } else if (e.altKey) { 7 //altキーを押されたら 8 } else { 9 switch (e.keyCode) { 10 case 37: 11 //←キーを押されたら 12 break; 13 case 38: 14 //↑キーを押されたら 15 break; 16 case 39: 17 //→キーを押されたら 18 break; 19 case 40: 20 //↓キーを押されたら 21 break; 22 //...etc 23 } 24 } 25}
投稿2016/12/21 11:12
編集2016/12/21 11:13総合スコア241
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
textarea要素はフォーカスされている限りは入力可能状態です。
[Alt] キーを押すとフォーカスが外れるので入力不可能となります。
[Shift] キーはフォーカスを外さないので入力可能状態が継続されます。
textarea要素に focus
, blur
イベントを定義すればこれらを判定可能です。
input
, keydown
, keyup
イベントをtextarea要素に定義した場合、textarea要素にフォーカスがない場合にはキー入力を検知しません。
ですので、普通は input
イベントを定義するだけで問題がありません。
Re: teratailpeta さん
投稿2016/12/21 10:50
編集2016/12/21 10:58総合スコア18194
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。