- 締切済み
selectで選ばれた値を別ページのセレクトボックスへ渡す
こんばんわ。 二つの連動したセレクトメニューがあって、別ページにもまったく同じものがあるんですが、最初のページで選ばれた値を別ページを読み込んだときにセレクトメニューに初期設定として渡すことはできますか? いろいろWEBでサンプル等探しておりましたが、ニッチもサッチもいきません。どなたかご教授ください。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
今回の作業はjavascriptですべきことでは ない気が・・・。#3で書いた埋め込みを 実現してください。 例示のソースにあるCreateは勝手に指定し たものだと思うのでフォローにも限界があ りそうですが、selectは動的に作成してい るのですか? スタティックに最初から手で書いたほうが よいのでは? とはいえ、質問の件は以下のとおりです。 仮にoption21番目の項目にselectedをつけ るなら以下です。 document.getElementById('lstsel1').options[20].selected=true; optionsは0からはじまるので1ひきます。 もしここで、getなどで受け取ったデータ 内容を元にselectedをつけるのであれば forでoptionsをまわしてvalueを参照し、 適合したところに.selected=true;をつけ ればよいでしょう。 その辺すでに#2で例示してあります
- yambejp
- ベストアンサー率51% (3827/7415)
データの受渡さえPHPでやるなら、非常に簡単な話しで、 onloadとかそんなレベルの話じゃなく、クライアント 依存しないように最初からデフォ値を埋め込みます。 以下はgetでしてますがpostでもできます。 //a.htm これはAです。<br> <form action="b.php" method="get" name="f"> <select name="s" onChange="this.form.submit()"> <option value="">---------- <option value="001">データ001 <option value="002">データ002 <option value="003">データ003 <option value="004">データ004 </select> </form> //b.php <?PHP $s_get=$_GET["s"]; $s_option["001"]="データ001"; $s_option["002"]="データ002"; $s_option["003"]="データ003"; $s_option["004"]="データ004"; $s_selected[$s_get]="selected"; foreach ($s_option as $key => $val){ $body.="<option value=\"".$key."\" ".$s_selected[$key].">".$val."\n"; } ?> これはBです。<br> <form name="f"> <select name="s"> <option value="">---------- <?= $body ?> </select> </form>
- yambejp
- ベストアンサー率51% (3827/7415)
もうすこし具体的な例をあげていただけば回答しやすい のですが、一応この程度ならできます。 結局ページ間でデータを渡すのはjavascriptではムリが あります。ソース見てもらえればわかりますが、 かなりムリヤリです。 データの受け渡しはPHPやCGIに任せる方がムダが 少なくてすみますよ。以下ソース //a.htm これはAです。<br> <form action="b.htm" method="get" name="f"> <select name="s" onChange="this.form.submit()"> <option value="">---------- <option value="001">データ001 <option value="002">データ002 <option value="003">データ003 <option value="004">データ004 </select> </form> //b.htm これはBです。<br> <form name="f"> <select name="s"> <option value="">---------- <option value="001">データ001 <option value="002">データ002 <option value="003">データ003 <option value="004">データ004 </select> </form> <script language=javascript> var a=document.location.toString().split("?") if (a.length==2){ var b=a[1].split("=") eval(b[0]+"=\""+b[1]+"\"") var e=document.forms["f"].elements[b[0]] for (var i=1;i<=e.length;i++){ if(e.options[i].value==eval(b[0])){ e.selectedIndex=i break } } } </script>
補足
おはようございます。#1さん#2さん有難うございます。 おっしゃるとおりデータの受け渡しはPHPで考えてます。 ただ受け渡したデータを、連動した二つのセレクトボックスに初期設定として (onload属性でコールすればいいんですかね?)配置したいんです。 具体的な例を挙げずに、ソースまで書いていただいて有難うございます。 javascriptは初心者で、連動するセレクトメニューは以下のサンプルを使っております。宜しくお願いします。 http://www.parkcity.ne.jp/~chaichan/src/javasc31.htm
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
別ページを呼び出すときに form method=GETを使うか あるいは、リンクで直接URL?name=value のようにして呼び出せば、呼び出されたページで location.searchプロパティで?以降の文字が取り出せます。 この値を使ってセレクトメニューを設定すればいいでしょう
補足
ご回答有難うございます。 セレクトメニューの設定ですが、連動した二つのセレクトボックスのoption値 に動的にselectedをつけることってできますか? 当方初心者で、いろいろなサイトを参考にしましたが、 どうにかすると、メニューの何番目が選ばれたかを変数にして渡して、別ページの連動したセレクトボックスにselectedがつけることができるみたいなんですけど。 すみません分かりにくい質問で。宜しくお願いします。
補足
有難うございます。ほんとに恐縮ですが追加質問させて下さい。 onloadを使う場合はどのようにoption値にselectedをつけるのでしょうか? 以下使用しているスクリプトです。 function CreateList()//body要素のonLoad属性でコールされる { Create(document.getElementById('lstsel1'), strsel1); Create(document.getElementById('lstsel2'), strsel22); } ↑ この配列