
PHP、XHTML、CSSで応募フォームの作成をしております。
PHPとHTMLは別ファイルで作成しており、PHPにアクセスしてそのPHPが指定されたテンプレートを読みにいくような流れとなっております。
HTMLもPHPも完成して、応募フォームとして一通り動くようになったのですが、新たにフォーカス機能を追加したいということになりました。
具体的には、応募フォームの一番最初のテキストエリアに、ページ読み込み時にフォーカスを当てたいという内容です。
そこで、フォーカス機能用のJavaScriptを別ファイルで新たに作成し、動きを確認してみたところ上手く動きません。
HTMLとJavaScriptのソースは下記の通りです。
====================================================================
■HTML(全て書くと長くなってしまうので、簡略させていただきます)
<script type="text/javascript" src="$path_top_js/focus.js"></script>
<body onLoad="Focus()">
</head>
<form name="top" action="index.php" method="POST" onReset="return false;" onSubmit="return false;">
<input type="hidden" name="USER_ID" value="$USER_ID">
<INPUT size="20" type="text" name="USER_ID" value="$USER_ID" MAXLENGTH="10">
</form>
</body>
■JavaScript(focus.js)
function Focus(){
document.top.USER_ID.focus();
}
====================================================================
「フォームのname="USER_ID"というテキストエリアにフォーカスを当てる」という内容になります。
なぜフォーカスが当たらないのか、原因は予想がつくのですが、どう解決していいのか分かりません。
多分、フォームの値を保持するために記述しているhiddenタグ
<input type="hidden" name="USER_ID" value="$USER_ID">
にJavaScriptのフォーカスが当たってしまっているみたいです。(フォーカスが当たっていると思われるhiddenタグは見ることができません)
試しにhiddenタグを外してみたところ、JavaScriptで指定したテキストエリアにフォーカスが当たっていることを確認しました。
「応募フォーム」ということで、ページ遷移した際にもフォームに入力した値を保持しておくためにhiddenタグは外したくないのですが、フォーカス機能もちゃんと動くようにしたいと思っております。
解決方法が分かる方いらっしゃいましたら、ご教授の程お願い致します。
No.1ベストアンサー
- 回答日時:
同じフォーム内の複数のインプットに同じnameを与えることに問題があるような気がしますが…
hiddenのほうを USER_ID_HIDDEN などとでも名前を変えてあげればよさそうですけれど?
そのまま、強行にやるなら、現状のブラウザ(HTML 4.0)であれば
document.getElementsByName("USER_ID")[1].focus();
または、
document.forms[0].elements["USER_ID"][1].focus();
(↑当該formが最初のformと仮定しています)
などで、一応通じるとは思いますが、将来的にどうなるかはよくわかりません。
fujillinさん
迅速なご対応、ありがとうございます。
今までこうやって作ってきたので、同一テンプレート内に同じnameがあることに違和感がなかったのですが、バリデートをかけたときにそこが減点されていたということもあり、仰る通りだと思います。
hiddenの方に"_HIDDEN"と追加してあげた名前にして、PHPを修正して対応することができました。
JavaScriptの方を修正することも考えましたが、"将来的に"という言葉が気になったので、こちらでの対応はやめておきました。
ご丁寧な回答を、どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- PHP php ログイン 1 2022/11/01 00:24
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アンケートのページを作ろうと...
-
メールフォームの作り方で質問です
-
HP作成初心者です。
-
チャットフォームの悪用
-
メールフォームがうまく作れません
-
Cookieの設定方法がわからない。
-
【ホームページ、Webページ開発...
-
オーダーフォームの文字化け
-
INPUT TEXT内の文字位置を指定...
-
tableにformを配置したい。
-
フォームの項目を来たページに...
-
タブキーでなくエンターキーで...
-
自サイトに検索機能を設置
-
フォーム内の操作で・・・
-
フォーム、入力フィールドの設...
-
webデザイン メール問い合わせ...
-
お問合せフォームからのメール...
-
セレクトボックスの値取得に関して
-
全ページにメニュー表示をさせたい
-
JavascriptとCookieについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
submitをボタン以外にするには
-
フォーム要素以外にもname属性...
-
1アクションでPOST・GET、両方...
-
リンクをクリックした時にform...
-
URL パラメータを使ってフォー...
-
長文のmailtoの使い方
-
フォームのテキストエリアをク...
-
mailtoについて
-
type="hidden"を使って時刻を送信
-
送信ボタン押下時に値が未入力...
-
フォームからsubmitをした後再...
-
submitの処理の後別の画面を表...
-
チェックボックスにチェックを...
-
</form>タグを使用すると強制的...
-
Enterキーでフォームの入力フィ...
-
タブキーでなくエンターキーで...
-
スマホやガラケーに使える簡易...
-
FlashMXについて
-
Firefoxで参照ボタンのURL入力...
-
UTF-8 コードでのmailtoの文字化け
おすすめ情報