• ベストアンサー

tabキーによるfocusの当たり方を制御したい

こんにちは,よろしくお願いします。 formが設置してあるページで,tabキーを押すとfocusが移動しますが,この挙動が,ブラウザによって違うことに気づきました。 ドリームウィーバーで,レコードの挿入ウィザードを使って簡単にフォームを設置することができますが,たとえば,この単純なページをInternet Explorerで開いて,1回tabキーを押してみると,focusは,ブラウザのアドレスバーに行ってしまいます。しかし,Firefoxでは,フォームの1番目のテキストボックスにfocusが当てられ一番最後にブラウザのアドレスバーなどに行きます。また,OperaではFirefoxと同様にフォームの1番目のテキストから始まって,ブラウザにはfocusが渡りません。 FirefoxやOperaのようにフォームの1番目の項目からfocusがあたるようにしたいのですが,どのようにすればよいのでしょうか? gooやYahooを上記の3つのブラウザで開いてみると,必ず同じ挙動を示して,同じところからfocusが当たりますから,何らかの方法で制御する方法があるのだと思うのですが…。 tabindexを設定して,フォームの1番目の項目を1として,順に設定してみたりしたのですが,Internet Explorerでは,やはり一番先にブラウザにfocusが渡ってしまいました。 私の希望としては,Opera のように一切ブラウザにfocusが当たらないようにしたいのです。しかし,できないのであれば,Internet Explorerで一番最初にブラウザにfocusが当たらないようにする方法を教えていただきたいです。 当方,JavaScriptとPHPにてホームページを作成中です。よろしくお願いします。

  • HTML
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
回答No.2

ページ開いたときにtabindex=1のやつへフォーカスさせておくとか・・・ window.onload = function() { document.getElementById('フォーカス先のID名').focus(); }

emikouji
質問者

お礼

tenderfeelさん,ありがとうございました。 おっしゃる通りにしたらできました。 実は私は,1番目のテキストボックスに,初期値としてvalue="入力してください"としていたので,onloadイベントにfocus();ではなく,select();を設定しておりました。それで,tabキーを押したときブラウザからfucusが当たったのだとわかりました。 そこで, document.getElementById('フォーカス先のID名').focus(); document.getElementById('フォーカス先のID名').select(); としたら,うまくいきました。ありがとうございました。

その他の回答 (1)

  • gityotan
  • ベストアンサー率53% (23/43)
回答No.1

ソースで指定することは可能なはずです。 ブラウザがうまく動いてくれるかどうかまでは分かりません。

参考URL:
http://www.google.co.jp/search?hl=ja&q=html+tabindex&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
emikouji
質問者

お礼

gityotanさん,ありがとうございました。 またよろしくお願いします。

関連するQ&A

  • タブダイアログのフォーカスの移動について

    タブダイアログを使った場合の フォーカスの移動についての質問です。 状態としましては フォームにタブ数3のタブダイアログがあり、 それぞれのタブに3つテキストボックスがあります。 また、タブダイアログとは別にフォーム上に 閉じるボタンが1つあります。 現在1つ目のタブの1つ目のテキストボックスに フォーカスがあり、Tabキーでフォーカスを 移動させていくのですが、 3つ目のテキストボックスでtabキーを押すと フォーカスがどこに行ったのか 行方不明になってしまいます。 なぜか2つ目と3つ目のタブの 3つ目のテキストからは 閉じるボタンへフォーカスが移動するのですが、 1つ目のテキストだけが行方不明になってしまいます。 (shift+tabで戻ってきません) また、3つ目のタブのキャプションからの フォーカス移動も行方不明となってしまうます。 タブインデックスは タブダイアログボックスが0 1つ目のタブの1つ目のテキストが1 1つ目のタブの2つ目のテキストが2 1つ目のタブの3つ目のテキストが3 2つ目のタブの1つ目のテキストが4        ・        ・ 3つ目のタブの3つ目のテキストが9 閉じるボタンが10 となっています。 タブダイアログのフォーカス移動を制御するには どうしたら良いのでしょうか? また、行方不明になってしまうフォーカスの 現在位置を見つけるようなことはできますでしょうか? よろしく回答のほどお願いします。

  • Tabキーについて

    次のテキストボックスに入力を飛ばしたいときは、Tabキーを押せばいいですよね? 今までそうしてきたのですが、ある日突然、どこかのボタンに当たってしまったのか、Tabキーを押すと、他に開いてるウィンドウが出てきてしまうようになってしまいました。(他のウィンドウを開くには、TabキーとAltキーを同時に押すと開くんですよね?) 元の状態(Tabキーを押すと次のテキストボックスに飛ぶように)に戻す方法を教えてください。

  • [HTML]TABインデックスはいいけれど・・・。

    こんばんは。 HTMLでフォームを作った際、タグの中に TAGINDEX='x' と設定してやればその順番どおりに「TABキー」を押したらフォーカスが移動しますよね? 例えば5つのテキストボックスがあってそのうち3つに1,2,3とTABインデックスをつけたとします。その場合、最初の3回はその順番どおりにいき、次に押せば、TABインデックスがなく、先に表示されているテキストボックスにフォーカスが移動してしまいます。 私としては残りの2つはTABでフォーカスしてほしくないのです・・・でもマウスクリックではして欲しいのです。 つまり、フォーカスが来たからと言って違うテキストにフォーカスを移すというJavaScriptではダメです。マウスでクリックした場合も移動してしまうからです。 なんかいい方法ないですか?

  • どこにもフォーカスを当てたくない

    フォームを開いたとき、どこにもフォーカスを当てたくないです。 アクセス2003です。 フォームにテキストボックスを1つ設置して、そのフォームを開くと フォーカスがテキストボックス上で、点滅しますが どこにもフォーカスを当てない方法あるのでしょうか? Private Sub Form_Open(Cancel As Integer) Me.詳細.SetFocus End Sub とするとコンパイルエラーになってしまいます。 不可能でしょうか?よろしくお願い致します。

  • Tabでのフォーカス(win32)

    edit = CreateWindow( TEXT("EDIT") , NULL , WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_NUMBER | ES_LEFT , 0 , 0 , 35 , 18 , hWnd , (HMENU)1 , ((LPCREATESTRUCT)(lParam))->hInstance , NULL ); でエディットコントロールを作成しました。 フォーカスがエディットコントロールにある時、TABキーで フォーカスをなくしたいのですが、どうしたらよいでしょうか? デバッガーで追ってみると、WM_KEYDOWNがウィンドウに送られていませんでした。

  • キーボードのtabキーとenterキーの変換

    ホームページのあるページにテキストフォームがあります。 キーボードのtabキーを押した時に、enterキーを押した時の処理を施したいと思っています。 通常tabキーを押せば次のフォームにカーソルが移動するかと思いますが、 このページではそれがenterキーとして動いてほしいと思っています。 このテキストフォームの横にはsubmitも置いており、即時にsubmit送信したいのです。 テキストフォームは一つだけです。 なぜそういうことをしたいかというと、スキャンでバーコードを読取りテキストフォームに数値を表示させます。 このスキャナーは設定でスキャンした後にtabキーをセットすることが可能で、 キーコードを確認してもスキャン後にtabキーを入力しているようでした。 しかし、tabキーではスキャン後にsubmit送信されませんので、tabキーをenterキーに変換してしまえばスキャン読み取り後即時にそのフォームが送信されるのではないかと思っています。 このスキャナーでは読み取り後にenterキーを打つという設定はあるのですが、 複数のフォームがある場合にスキャンした値を入力していくことができません。 (※別ページには複数のフォームが存在する) どうすればキーコードを変換してtabキーをenterキーに変換できるのでしょうか? ブラウザはGoogle chromeです。 OSはWINです。 その他不明点がありましたら、ご質問下さい。 よろしくお願いします。

  • firefox フォームにフォーカス

    ページ内の上の方にフォームが一つ付いているページを10タブ開いているのですが、そのフォームにctrl+cで次々と貼り付けをしたいとおもっています。 アドオンでF3キーで次のタブへいけるようにしてあるのですが、次のタブへ行くとフォーカスがどこかへいってしまい、tabキーを7回押すと ページ内のフォームにフォーカスになります。これをショートカットキーか何かで一発でやりたいのですが、可能でしょうか?

  • タブ切替ボタンからのフォーカス移動について

    いつもお世話になっています。 VisualStudio2005,Vistaで開発しています。 タブコントロールのタブ切替ボタンにフォーカスが当たっている状態で左右キーを押すと、 隣のボタンにフォーカスが移ると共にアクティブなタブが変更されます。 その状態でTabキーを押すと、該当タブページの先頭オーダーを持つコントロールにフォーカスが移りますが、 これと同じ動作を下キー、Enterキーで実現したいと考えています。 テキストボックス等ではkeypressイベント、keydownイベントでフォーカス制御ができましたが、 どうもうまくいきません。 個々のタブページでは両イベントが発生せず、タブコントロール本体ではイベント自体は起きるものの、 コンボボックスの内容を変更するために押した下キーにすら反応してしまいます。 何か良い解決方法はありませんでしょうか。 皆様のお知恵をお貸しいただけましたら幸いです。

  • MDIの子フォームでフォーカスアウトを制御したい

    MDIの子フォームでフォーカスアウトを制御したい VB2005で開発を行っています。 ・MDIの子フォームA、Bが存在します。 ・子フォームA、Bともに、表示されています。 ・子フォームAにはテキストコントロールAA、ABの2つが存在します。 ・テキストコントロールAAのLostFocus()に、テキストコントロールAA.Focus()が  記されています。 この状態で、子フォームAのテキストコントロールAAからABへフォーカスが移った時、 コントロールAAのLostFocus()で制御するのはうまくいきます。 が、子フォームAのテキストコントロールAAから子フォームBへフォーカスが移った時、 コントロールAAのLostFocus()が動作しますが、無限ループっぽい動きに陥ったり、 子フォームAにフォーカスが設定されません。 子フォームを最小化させたり、全然関係のないアプリケーションやデスクトップに フォーカスを遷移したあとにフォーカスを戻してみても同じような現象になります。 イメージとしては、フォーカスアウトでエラーになったんだから、フォーカスを移し たくないです。 Private Sub ControlAA_LostFocus(ByVal sender As System.Object, ByVal e As System.EventArgs)  If "".Equals(ControlAA.Text) Then   MessageBox.Show("hoge")   ControlAA.Focus()   Return  End If End Sub フォーカスアウト時に項目チェックなどをやる関係で、どうしてもLostFocus()上で 処理をやらなければならないと思われるのですが、フォーカスアウトされた時のオペ レーションの違いに限らず上手く制御させる方法はありませんでしょうか? 調べてはみましたが、MDIの概念でそもそもそういうことするなというような事らしいですが、 フォーカスアウト時に検索処理が走るというような仕様の為、どうしても解決させたいです。

  • tabキーで移動するフォーム

    tabキーで次の項目に移動するフォームを作りたいのですが、 (ホームページビルダー使用) なぜかtabキーを押しても何の反応もありません。 何か特別なタグが必要なのですか? 試しにHTML講座にあるサンプルメールフォームのタグをコピー&ペーストしましたが、これも移動しませんでした。(講座上では移動する)

    • ベストアンサー
    • HTML

専門家に質問してみよう