- ベストアンサー
フォーカスする際のテキストフィールド名を変数で渡したい
表のような入力フォームがあって、submitした際にあるプログラムが走り、HTML本体を再読み込みしています。 画面が表示されたときに、テキストフィールドにあらかじめフォーカスを合わせるには、以下のOnloadとfocus()を使いますよね? <body onLoad="document.Form.Field.focus()"> で、再読み込み時には、次の入力用テキストフィールドへフォーカスを合わせたいのですが、どうすればいいでしょうか? 例えば A1 A2 A3 というとき、A1を入力後、後ろでプログラムが走り、再読み込みして画面が再表示されたときに、A2にフォーカスがうつっている、という感じです。通常の書き方だとBodyにはひとつか(A1しか)かけないので・・・変数を使ったらどうかと思ってやってみましたがうまくいきません。 <SCRIPT LANGUAGE="JavaScript"> <!-- var f; f = "A1"; window.alert(f); //--> </SCRIPT> <body onLoad="document.Form.(f).focus()"> 又は <body onLoad="document.Form.var(f).focus()"> <body onLoad="document.Form.f.focus()"> フィールドにindextabをしてみましたがダメでした。又A1にonBlurが入っております。 そもそも変数なんて使えるのでしょうか? 変数以外の方法でも、他にアイディアがあればお願いします。 締切りが明日で非常にあせっています。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
お急ぎのようなので、1例を <?php // フォーカスを当てたいフィールド名を設定 $focus_name = "A1"; ?> <body onLoad="document.Form.<?php echo $focus_name ?>.focus()">
その他の回答 (1)
- coral0
- ベストアンサー率92% (13/14)
一つPHP例を挙げて下さっている方がいますので、私はJavaScriptでの例を挙げたいと思います。 (こちらは内容が複雑なので、下の方のPHP例が良いかと思いますが、念のためJavaScript例を書いておきます) 以下の例では、アドレス欄に記述されたパラメータ名"F"を取得し、そのパラメータの値に対応する場所にフォーカスが移ります(IE+Netscape対応) (処理が複雑ですみません^^;) <HTML> <HEAD> <SCRIPT> // パラメータを取得 function getParameter( param ) { var k; var params = new Array(); var args = document.location.search; if( navigator.appName.indexOf("Microsoft") >= 0 ) args = unescape(args); if( args.length > 0 ) { args = args.substring(1, args.length); params = args.split("&"); for(k = 0; k < params.length; k++ ) { if(params[k].substring(0, params[k].indexOf("=")) == param) { return params[k].substring(params[k].indexOf("=") + 1, params[k].length); } } } return null; } // パラメータで渡された場所へフォーカスを移す function form1SetFocus() { var index; index = Math.abs(getParameter("F")); if(!index) index = 1; document.form1.elements[index].focus(); for(index = index + 1; index < document.form1.length; index++) { document.form1.F.value = index; if(document.form1.elements[index].type.toUpperCase() == "TEXT") break; } } </SCRIPT> </HEAD> <BODY onLoad="form1SetFocus()"> <FORM NAME="form1"> <INPUT TYPE="HIDDEN" NAME="F" VALUE=1> <INPUT TYPE="TEXT" VALUE=""><BR> <INPUT TYPE="TEXT" VALUE=""><BR> <INPUT TYPE="SUBMIT" VALUE="Submit"> </FORM> </BODY> </HTML>
お礼
お答えをありがとうございました。 JavaScriptのソースも書いていただきありがとうございます。 elements[]としてみましたら、うまくいきました。 まだまだ勉強中ですので今後ともよろしくお願いいたします。
お礼
お答えをありがとうございました。
補足
昨日は大変お世話になりました。 こちらの文中途中でも、<?php>と記入できるのですね...勉強になりました。今後ともよろしくお願いいたします。