- ベストアンサー
キーボードキーでもクリックしたときと同じようにしたい。
アプリのクリックすると表示が変わるところをキーボードで 特定のボタンを押してもクリックしたのと同じように動作する ようにすこし変更したいと思っています。 アプリでは出題、問題、回答をクリックするとその機能が 使われるようです。その各クリックを Qを押したとき出題、Wのとき問題、Eキーを押したとき回答にも 割り当てたいのですがどうすればいいかわかりません。 処理をしているところはおそらくここだと思うのですが そのプログラムを下のに追加して書いてくれませんか? <!-- メニュー --> <span id='MainMenu' style='left:5;top:0;width:100%;height:24;background-color:#cccccc;padding:3;'> <a id='MainMenu.Item1' onclick='procMenu(1)' class='Menu' href='javascript:void(0)'>[出題] </a> <a id='MainMenu.Item2' onclick='procMenu(2)' class='Menu' href='javascript:void(0)'>[問題] </a> <a id='MainMenu.Item3' onclick='procMenu(3)' class='Menu' href='javascript:void(0)'>[回答] </a> </span>
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
<script> document.body.onkeydown=function(){ if(event.keyCode==81) procMenu(1); } </script>
その他の回答 (3)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
document.body.onkeydownで押されたキーは判断できますが、 アルファベットキーはブラウザ独自の機能が割り当てられていることもあります。
お礼
アプリケーションは別ウィンドウで(ブラウザ上でうごくのではない)とおもうのでブラウザの独自キーが影響することは たぶんないとおもうのですが。 単純にQ、もしくはALT+QでprocMenuに1をいれて関数を実行すると いうのはむりなのでしょうか? 下のはもちろん適当ですが if{"Q"//Qを押したとき procMenu(1) } こんなかんじで 回答ありがとうございました
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
onclickは「clickしたら」ですからね、クリック以外の方法では使 えません。物理的な動作に依存せずリンクをアクティブにした時の 挙動は、href属性でhref="javascript:procMenu(1)"と書きます。 で、「特定のキー」で特定のリンクをアクティブにするには、pipi さんの回答通りaccesskey属性を使います。altやctrl等の修飾キー が必要かenterが必要かなどは、ブラウザに依存します。
お礼
別ウィンドウでプログラムが起動するのですが ブラウザも関係あるのでしょうか?一応IE7なのですが・・ マウスでクリックできなくてもよいので 単純にQ、もしくはALT+QでprocMenuに1をいれて関数を実行すると いうのはむりなのでしょうか? 下のはもちろん適当ですが if{"Q"//Qを押したとき procMenu(1) } こんなかんじで 回答ありがとうございました
<a id='MainMenu.Item3' onclick='procMenu(3)' class='Menu' href='#' accsesskey="q">[回答] </a> 希望通りではありませんが、ALTキー+Q、Enterで似たようなことが 標準でできます。どうでしょう?
お礼
うーん ALT+Qを押してもリンクがアクティブにならないです、 メニューに表示されていてクリックすればだいじょうぶなのですが・・ もちろんアプリケーションはあらかじめアクティブにしています。 質問に書いたプログラムはようするにマウスでクリックしたときに procMenuという関数に引数の1,2,3をいれて関数を実行させて いるのですよね。 単純にQ、もしくはALT+QでprocMenuに1をいれて関数を実行すると いうのはむりなのでしょうか? 下のはもちろん適当ですが if{"Q"//Qを押したとき procMenu(1) } こんなかんじで 回答ありがとうございました。
お礼
なぜかスクリプト構文エラーがでてしまいます。 自分の記述場所がわるいのですかね。 html本体部分に書いてるのですが・・ 再回答ありがとうございました。