• ベストアンサー

セレクトボックスの初期選択と選択保持

セレクトボックスで選択した日付でカレンダーの検索を行いたいです。 起動したときは当日日付を表示させ、検索後は選択した日付をそのまま表示させておきたいのですがうまくいきません。 javascriptを使用するのではないかと思うのですが、初心者のため記述の仕方がよくわかりません。 どなたかご教授いただけるとうれしいです。よろしくおねがいします。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

サーバーサイドのプログラムが動くなら話は別です。 <?php $y= date ("Y"); if($_REQUEST["y"]) $y = $_REQUEST["y"]; $m= date ("m"); if($_REQUEST["m"]) $m = $_REQUEST["m"]; $d= date ("d"); if($_REQUEST["d"]) $d = $_REQUEST["d"]; for($i = $y-5; $i <= $y+5; $i++){ $selected=$y==$i?" selected":""; $options["y"].="<option value=\"{$i}\"{$selected}>{$i}</option>\n"; } for($i = 1; $i <= 12; $i++){ $selected=$m==$i?" selected":""; $options["m"].="<option value=\"{$i}\"{$selected}>{$i}</option>\n"; } for($i = 1; $i <= 31; $i++){ $selected=$d==$i?" selected":""; $options["d"].="<option value=\"{$i}\"{$selected}>{$i}</option>\n"; } print <<<eof <form method="get"> <select size="1" name="y"> {$options["y"]} </select>年 <select size="1" name="m"> {$options["m"]} </select>月 <select size="1" name="d"> {$options["d"]} </select>日 <input type="submit" value="go"> </form> eof; ?> さらに詳しい説明が必要ならPHPの板で質問ください。

cubekun
質問者

お礼

yambejpさん 早速の回答ありがとうございます。今回教えていただいたソースで思うようにやりたいことができました。 javascriptを使用しなくても出来たのですね。。。 本当にありがとうございました!!

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

色々きちんとやるならクッキーをつかったり、サーバーで処理したりが 必要ですが、とりあえず動けばいいだけならたとえばこんな感じかな? <script> window.onload=function(){ var s=document.location.search.substr(1); var d=new Date(); if(!s) s="y="+d.getFullYear()+"&m="+(d.getMonth()+1)+"&d="+d.getDate(); var arg=s.split("&"); for(var i=0;i<arg.length;i++){ setSelect(arg[i].match(/^([ymd])=(.*)/)); } } function setSelect(obj){ var tags=document.getElementsByTagName("select"); for(var i=0;i<tags.length;i++){ if(tags[i].name==obj[1]){ for(var j=0;j<tags[i].length;j++){ if(tags[i][j].value==obj[2]){ tags[i][j].selected=true; break; } } } } } </script> <form method="get"> <select name="y"> <option value="2008">2008</option> <option value="2009">2009</option> <option value="2010">2010</option> </select> <select name="m"> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> </select> <select name="d"> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> </select> <input type="submit" value="go"> </form>

cubekun
質問者

お礼

yambejpさん、回答ありがとうございます。 早速試してみたらやりたいことができたのですが、<option>の部分でforを使用してみるとうまくいきませんでした。 scriptの流れがよく理解できていないので、どのように修正したらいいのかわかりません。 教えていただけると幸いです。 <select>はこのようにしてみました。 <form method="get"> <?php echo "<select size=\"1\" name=\"y\">"; $year = date ("Y"); for($cnt = 0; $cnt < 11; $cnt++){ $year2 = $year+$cnt-5; echo "<option value=$year2>$year2</option>"; } echo "</select>"; echo "年"; echo "<select size=\"1\" name=\"m\">"; for($cnt = 1; $cnt < 13; $cnt++){ echo "<option value=$cnt>$cnt</option>"; } echo "</select>"; echo "月"; echo "<select size=\"1\" name=\"d\">"; for($cnt = 1; $cnt < 32; $cnt++){ echo "<option value=$cnt>$cnt</option>"; } echo "</select>"; echo "日"; ?> <input type="submit" value="go"> </form>

関連するQ&A

専門家に質問してみよう