• ベストアンサー

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

セレクトボックスで選択した日付でカレンダーの検索を行いたいです。 起動したときは当日日付を表示させ、検索後は選択した日付をそのまま表示させておきたいのですがうまくいきません。 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

  • Select ボックスで選択した値を渡して、同一ページに再表示するには?

    JavaScriptで、年/月をSelectボックスで選択し、 その年/月のカレンダーを同一ページ内に表示したいのですが、 セレクトボックスで値を選択後、カレンダーを同一ページに 表示させる際、再表示時にセレクトボックスが初期状態に 戻ってしまいます。 そのため、カレンダーも初期状態のままのカレンダーのまま変更されません。 どうしたら、値を渡して再表示できるのでしょうか? 方法としましては、自分自身を再呼び込みするといった感じで しか方法が見つかりませんが、別の方法があれば、それでも結構です。 初心者なもので、なにとぞ、よろしくお願いいたします。

  • セレクトボックスで警告

    Javascriptの初心者です。 セレクトボックスが二つ(a,b)あるとして、 セレクトボックスa中の項目いずれかを選択肢すると、 セレクトボックスbのどの項目をも選択できないようにするため、 警告をだしたいのですが、 よい方法をご教授していただけなでしょうか。 よろしくお願いいたします。

  • セレクトボックスの初期選択状態(SELECTED)を動的にしたいのですが

    モーダル内に表示させるセレクトボックスで、毎回モーダル起動時ごとに、 セレクトボックス内の初期選択状態を変えたいと思っています。 1回目のモーダル起動時には本日の日付をSELECTEDにし、2回目以降は 前回のモーダル起動時に選択した値をSELECTEDにしたいと思っております。 いろいろな方法があると思うのですが(てっとりばやく、フラグを持たせる とか、クッキーを使うとか・・・)、正しく実行されず、困っています。 どなたか、よいアドバイスをください。お願いいたします。

  • セレクトボックス HTML javascript

    セレクトボックス HTML javascript php セレクトボックスの複数選択についてですがご教授よろしくお願いいたします。たとえばセレクトボックスを二つ作り 一つ目のセレクトボックスを ・フルーツ ・寿司 ・カレー フルーツを選択すると二つ目のセレクトボックスの中が ・りんご ・みかん ・なし 寿司を選択すると二つ目のセレクトボックスが ・いくら ・まぐろ ・うに このように 一つ目のセレクトボックスの選択によって 二つ目のセレクトボックスの中身を変えるにはどのようなコードを組めば よろしいのでしょうか。 現在 php javascript mysqlの勉強しています。 ご教授いただければ幸いです。

    • ベストアンサー
    • HTML
  • access2010の「日付選択カレンダー」

    access2010の「日付選択カレンダー」について、教えてください 1.状況      フォームのテキストボックスを作成し、下記の設定を行いました      書式→をyyyy/mm/dd、日付選択カレンダーの表示→日付 2.教えて欲しい事      アイコンをクリックし、カレンダー操作によりテキストボックスへ設定できますが、      テキストボックスに本日以外の日付(例えば、2020/12/31)を指定し、      カレンダーを起動すると、本日を選択した状態にてカレンダーが表示される      →カレンダーが2020/12/31を選択した状態にて、       カレンダーを起動させる方法を教えてください ※よろしくお願いします。検索してもヒットしません

  • セレクトボックス日付同士の比較について

    以下をどなたか教えていただけないでしょうか?よろしくお願いします。 二つのセレクトボックスで年/月/日を作成する。 さらに追加ボタンを押したときに 1.日付を比較しどちらかが一方が存在しない場合アラートを表示する。 2.開始日と終了日が前後していたらアラートを表示する。 3.OKであればテキストボックスに日付を出力する 以上です。javascript初心者ですが、よろしくお願いいたします。

  • javascriptでのセレクトボックスについて。

    javascriptを使ったセレクトボックスについて教えてください。 教えてgooのカテゴリ選択のように、セレクトボックスでjavascripを使い、 一つめのselectボックスでは ・1 ・2 ・3 のオプションを選択可能に 二つめのselectボックスでは、 1が選択されたら ・1の1 ・1の2 ・1の3 のオプションを選択可能に 2が選択されたら ・2の1 ・2の2 ・2の3 を選択可能に 3が選択されたら ・3の1 ・3の2 ・3の3 を選択可能に と言う風にはどうすれば出来るでしょうか? 教えてください、お願いします。

  • セレクトボックスの内容を連動

    2つのセレクトボックスの内容を連動させて表示を変えたいと思っているんですが、これってJavascriptですか? 一つ目の内容の選択に応じて変更したいです。

  • テキストボックスとセレクトボックスの選択肢の連携

    この度はお世話になります。 1個のテキストボックスに入力された文字列により、その後の1個の セレクトメニューの選択肢を変更することってできるのでしょうか? 具体的には以下のような動作です。 ・デフォルトではテキストボックスに文字列が入力された場合は、  その後のセレクトボックスには「トマト、きゅうり、ほうれんそう」  の選択肢が入る。 ・テキストボックスに「あいうえお」と入力された時のみ、その後の  セレクトボックスが「りんご、みかん、ぶどう」の選択肢に変わる。 ・テキストボックスに「かきくけこ」と入力された時のみ、その後の  セレクトボックスに「あじ、さば、かつお」の選択肢に変わる。 こんな感じですが、よろしくお願い致します。 当方、只今javascriptを勉強しており、条件式に苦戦しております。 サンプルプログラムを見せていただけるとありがたく思います。

  • セレクトボックスで選択された内容での切り替え

    こんにちは。 日にちを選択するセレクトボックスAと、 時間を選択するセレクトボックスB、Cを用意します。 はじめはAとBが表示されている状態です。 Aを選択したときに、 Aのボックスの中身が土日ならば、Bを消して(display:none)Cを表示させ、 Aのボックスの中身が平日ならば、そのままBを表示させたいです。 何度も日にちを変更してもB、Cの切り替えをおこないたいんです。。 しかも同じものを3つ用意したいんです。 一つ目はなんとか動くんですが、 二つ目と三つ目がうまく動きません。 一つ目のAが平日の場合だと、二つ目と三つ目のAが土日であっても平日の表示 (この場合セレクトボックスBが表示)されてしまいます。。。 初心者です。。なにかアドバイスなどいただけませんでしょうか?? 書き方も手探りなんで、ぐちゃぐちゃかと思います。。赤を入れて頂けると幸いです。。 現状はこんな感じです。。 select.mfpはセレクトボックスA .time01はセレクトボックスB .time02はセレクトボックスCです。 $("select.mfp").change(function () { var str = $("select.mfp option:selected").text(); var STR =str.charAt(12); // if (STR=="土" || STR=="日"){ // $(this).parent().children(".time02").css( 'display', 'block' ) // $(this).parent().children(".time01").css( 'display', 'none' ); // }else{ // $(this).parent().children(".time01").css( 'display', 'block' ) // $(this).parent().children(".time02").css( 'display', 'none' ) // } }).change(); -------HTML------------ <tr class="mfptr"> <td id="second"><!--<input type="hidden" name="ご予約日[join]年+月+日+時間+分" value="" />--> <p class="float">●第一希望 </p> <script type="text/javascript" src="./contact/commons/choice_date.js"></script> (↑これで日付のセレクトボックスを生成しています。) <select name="時間" class="mfp time01"> <option value="時間">時間</option> </select> <select name="時間" class="mfp time02"> <option value="時間2">時間2</option> </select> </td> </tr> 解りづらくてすみません。。 宜しくお願いします。

専門家に質問してみよう