• ベストアンサー

キーボードキーでもクリックしたときと同じようにしたい。

アプリのクリックすると表示が変わるところをキーボードで 特定のボタンを押してもクリックしたのと同じように動作する ようにすこし変更したいと思っています。 アプリでは出題、問題、回答をクリックするとその機能が 使われるようです。その各クリックを 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)'>[出題]&nbsp;</a> <a id='MainMenu.Item2' onclick='procMenu(2)' class='Menu' href='javascript:void(0)'>[問題]&nbsp;</a> <a id='MainMenu.Item3' onclick='procMenu(3)' class='Menu' href='javascript:void(0)'>[回答]&nbsp;</a> </span>

質問者が選んだベストアンサー

  • ベストアンサー
noname#84373
noname#84373
回答No.4

<script> document.body.onkeydown=function(){ if(event.keyCode==81) procMenu(1); } </script>

komata3
質問者

お礼

なぜかスクリプト構文エラーがでてしまいます。 自分の記述場所がわるいのですかね。 html本体部分に書いてるのですが・・ 再回答ありがとうございました。

その他の回答 (3)

回答No.3

document.body.onkeydownで押されたキーは判断できますが、 アルファベットキーはブラウザ独自の機能が割り当てられていることもあります。

komata3
質問者

お礼

アプリケーションは別ウィンドウで(ブラウザ上でうごくのではない)とおもうのでブラウザの独自キーが影響することは たぶんないとおもうのですが。 単純にQ、もしくはALT+QでprocMenuに1をいれて関数を実行すると いうのはむりなのでしょうか? 下のはもちろん適当ですが if{"Q"//Qを押したとき procMenu(1) } こんなかんじで 回答ありがとうございました

回答No.2

onclickは「clickしたら」ですからね、クリック以外の方法では使 えません。物理的な動作に依存せずリンクをアクティブにした時の 挙動は、href属性でhref="javascript:procMenu(1)"と書きます。 で、「特定のキー」で特定のリンクをアクティブにするには、pipi さんの回答通りaccesskey属性を使います。altやctrl等の修飾キー が必要かenterが必要かなどは、ブラウザに依存します。

komata3
質問者

お礼

別ウィンドウでプログラムが起動するのですが ブラウザも関係あるのでしょうか?一応IE7なのですが・・ マウスでクリックできなくてもよいので 単純にQ、もしくはALT+QでprocMenuに1をいれて関数を実行すると いうのはむりなのでしょうか? 下のはもちろん適当ですが if{"Q"//Qを押したとき procMenu(1) } こんなかんじで 回答ありがとうございました

noname#84373
noname#84373
回答No.1

<a id='MainMenu.Item3' onclick='procMenu(3)' class='Menu' href='#' accsesskey="q">[回答]&nbsp;</a> 希望通りではありませんが、ALTキー+Q、Enterで似たようなことが 標準でできます。どうでしょう?

komata3
質問者

お礼

うーん ALT+Qを押してもリンクがアクティブにならないです、 メニューに表示されていてクリックすればだいじょうぶなのですが・・ もちろんアプリケーションはあらかじめアクティブにしています。 質問に書いたプログラムはようするにマウスでクリックしたときに procMenuという関数に引数の1,2,3をいれて関数を実行させて いるのですよね。 単純にQ、もしくはALT+QでprocMenuに1をいれて関数を実行すると いうのはむりなのでしょうか? 下のはもちろん適当ですが if{"Q"//Qを押したとき procMenu(1) } こんなかんじで 回答ありがとうございました。

関連するQ&A