• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:自動的に日付が変るセレクトボックス)

自動的に日付が変るセレクトボックス

このQ&Aのポイント
  • コストを算出するcgiに条件を送信する、下のようなhtmlのフォームを機能アップする方法が解らずに困っています。
  • 2004年か2005年、1月~12月、1日~31日、単品かロットか、数量をそれぞれセレクトボックスで選択するようにしてあるのですが、ページを開いた時に選ばれている数値は当然「selected」で指定しています。
  • いつアクセスしても今日の日付の5日後の日付がselectedになるようにしたいのですが、方法はあるでしょうか?

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

  • ベストアンサー
  • Dpop
  • ベストアンサー率51% (279/544)
回答No.3

#1, #2 です。 日付のセレクトボックスを表示するJavaScriptです。これを元にしてみて下さい。 現在、日付の入力ボックスを作成している部分を、このスクリプトに置き換えれば。多分動作するでしょう。 ただし。セレクトボックスの名前は適当に付けてあるので、ご利用の環境に合わせて修正してくださいね。今は、「yy1」, 「mm1」, 「dd1」, 「yy2」, 「mm2」, 「dd2」・・・ としてあります。1, 2 の数字の部分は、plus5 と言う関数へのパラメータとして渡しています。 <html> <head> <title></title> <script type="text/javascript"> function plus5(p) { var cToDay = (24 * 60 * 60 * 1000); var today = new Date(); var plus5 = new Date(today.getYear(), today.getMonth(), today.getDate() + 5); var y5 = plus5.getYear(); var m5 = plus5.getMonth()+1; var d5 = plus5.getDate(); document.writeln("<select name=\"yy" + p + "\">"); document.writeln("<option value=\"" + y5 + "\">" + y5 + "年</option>"); document.writeln("</select>"); document.writeln("<select name=\"mm" + p + "\">"); for (i = 1; i <= 12; i++) { if (i == m5) { document.writeln("<option value=\"" + i + "\" selected>" + i + "月</option>"); } else { document.writeln("<option value=\"" + i + "\">" + i + "月</option>"); } } document.writeln("</select>"); document.writeln("<select name=\"dd" + p + "\">"); for (i = 1; i <= 31; i++) { if (i == d5) { document.writeln("<option value=\"" + i + "\" selected>" + i + "日</option>"); } else { document.writeln("<option value=\"" + i + "\">" + i + "日</option>"); } } document.writeln("</select>"); } </script> </head> <body> <script type="text/javascript">plus5(1);</script><br> <script type="text/javascript">plus5(2);</script><br> <script type="text/javascript">plus5(3);</script><br> </body> ここが分からない。と言う部分があれば、また質問してください。

chack
質問者

お礼

何度も丁寧なフォローをどうもありがとうございました! これなら、nameのいじり方もわかりますし、年の選択肢の増やし方もフォームの増やし方も解りますし、完璧です。 とても助かりました。 これをステップに、今後は少しでも自力で考えられるよう勉強させて頂きます。 どうも世話になりました!!

その他の回答 (2)

  • Dpop
  • ベストアンサー率51% (279/544)
回答No.2

#1 です。 言い忘れました。示したスクリプトは、Perl によるものです。CGIで作成されていると言うことですので、参考になると思います。

chack
質問者

お礼

今さらですが、お礼としての返信をさせて頂いておりませんでした。 失礼致しました。その節は本当にありがとうございました。

chack
質問者

補足

度々すみませんです。 CGIは既存のものなので、いじることが出来ません。 CGIに対してデータを送信するhtmlのページ内で何とか対応しなければならないのです。

  • Dpop
  • ベストアンサー率51% (279/544)
回答No.1

次のスクリプトを参考にしてみてください。 # 今日の日付を取得 $t = time; # 今日の日付を表示 print localtime($t). "\n"; # 今日の5日後の日付を計算 $t += 5 * 60 * 60 * 24; # 今日の5日後の日付を表示 print localtime($t). "\n";

chack
質問者

お礼

早々のお返事をどうもありがとうございます。 ただ、お恥ずかしいことに、例えば「本日の日付は○月○日です」というスクリプトでさえ組み方を知らないので、localtimeで数値を求めるスプリプトの冒頭の部分さえ書き方が解らず、私に出来ることと言えば5日後のところを3日後に変更するくらいです。ですから、求めた値をセレクトボックスに反映させる方法も、自分では応用が利かないのです。(^^; 有効に利用させて頂けなくて申し訳ありません。

関連するQ&A