• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:画像をボタンのようにフォーカス対象にする。)

画像をボタンのようにフォーカス対象にする

このQ&Aのポイント
  • 画像をボタンのようにフォーカス対象にする方法についての質問です。
  • 現在、画像にonclick,onmouseover,onmouseoutイベントを設け、ボタンとして機能を持たせていますが、キーボード操作だけでも押せるようにしたいです。
  • 具体的には、Tabキーが押された時に移り変わるフォーカス対象の中に加え、Enterキーが押された時のイベントを設定したいです。どのようにすればよいでしょうか?

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

なんか、もっと素直な作り方があると思いますけれど… (HTMLで用意されているものを、そのまま利用したほうが良いと思う) >1.Tabキーが押された時に移り変わるフォーカス対象の中に加える スクリプトで特殊制御するよりも、form部品を利用するほうが賢いと思われます。 (そうでないと、formの制御全体を作成することになりかねない) >2.Enterキーが押された時のイベントを設定する。 <input type=image>を利用してあげれば、Enterとclickが同じイベントで取得できるけれど、他のテキスト入力欄でEnterキーを押したときにsubmitの代表としてこの要素でイベントが発生したことになってしまうみたい。 これを区別するためにダミーでサブミットボタンを作ってみたところ、区別は可能になったが、非表示にしたとたんIEはそのボタンを無視してくれる。 しかたが無いので、keyイベントで識別。 これだとclickについてはまた別に制御する必要がある。(省略) (Enterキーでsubmitが発生するので、適当に制御する必要あり) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head><title>test</title> <script type="text/javascript"> <!-- function test(evt) { if (evt.keyCode != 13) return; var t = evt.target || evt.srcElement; if (t.nodeName == 'INPUT' && t.type == 'image') alert(t.name); return; } --> </script> </head> <body> <form action="" method="" onkeydown="test(event)"> <input type="text" name="i1" value=""> <p>LogIn: <input type="image" name="log_in" src="btn1.gif"> <p><input type="text" name="i2" value=""> <p>LogOut:<input type="image" name="log_out" src="btn2.gif"> </form> </body> </html>

wendy0303
質問者

お礼

fujillinさん、ありがとうございます。 >スクリプトで特殊制御するよりも、form部品を利用するほうが賢いと思われます。 ですよね。。(汗 ここは素直にボタンを <input type="button" onclick="..."> 等で書き直すようにします。 (何で前の人はボタンを全部画像にしたんだろう。。) >Enterキー押下時イベント サンプルつきの回答、ありがとうございます。 区別の部分は少々難しそうですが、 それだけにこの回答は理解の助けとなりそうです。 ありがとうございます。 解決後、再度返信します。