• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フォームのValue値)

フォームのValue値をif文で変数に変換する方法

このQ&Aのポイント
  • フォームのValue値をif文を使用して変数(日付)に変換したい場合、ifで得られた変数をValueに置き換えることができません。
  • 万年カレンダーの作成を行っている際に、form内のバリュー値をif文で変数に変換して、それを元のValueに置き換えたいと考えています。
  • 具体的には、フォームに用意されている日付変更のためのボタン(PreviousYear、PreviousMonth、ThisMonth、NextMonth、NextYear)をクリックしたときに、if文で該当する日付を変数に代入し、その変数をform内のバリューに反映させたいと思っています。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

ん~ 日付の年、月を記憶しておく要素をhiddenなどで用意しておいて使ったほうがよさそうに思います SUB1で送信された内容によって 年の加減算、月の加減算を行って万年カレンダーを表示 といったロジックのほうがすっきりすると思います <%  dim YY1, MM1, cmd  if Request.QueryString("Year")<>"" then   ' GETで呼ばれた場合   ' ttp://sample.jp/test.asp?Year=2008&Month=3   YY1 = Request.QueryString("Year")   MM1 = Request.QueryString("Month")   cmd = ""  else   ' POSTで呼ばれた場合   ' 送信データから 年、月、どのボタンかを取得   YY1 = Request.Form("Year")   MM1 = Request.From("Month")   cmd = Request.Form("SUB1")   if cmd<>"" then    select case cmd    case "+1 Year"     YY1 = YY1 + 1    case "-1 Year"     YY1 = YY1 + 1    case "+1 Month"     MM1 = MM1 + 1     ' 12月を超えた場合の処理     if MM1>12 then      MM1 = 1      YY1 = YY1 + 1     end if    case "-1 Month"     MM1 = MM1 - 1     ' 1月を超えた場合の処理     if MM1 < 1 Then      MM1 = 12      YY1 = YY1 - 1     end if    end select   end if ' cmd<>""  end if  ' Request.QueryString("Year")<>""  if YY=0 then   ' 初期値がない場合   dim dt   ' 現在の日付で初期化   dt = now   YY1 = Year( dt )   MM1 = Month( dt )  end if %> <form method="post" id="myForm">   <input type="hidden" name="Year" value="<%= YY1 %>">   <input type="hidden" name="Month" value="<%= MM1 %>">   <input type="submit" name="SUB1" value="-1 Year">   <input type="submit" name="SUB1" value="-1 Month">   <input type="submit" name="SUB1" value="+1 Year">   <input type="submit" name="SUB1" value="+1 Month"> </form> Year: <%= YY1 %><br> Month: <%= MM1 %><br> といった具合でいいのでは

saddiq
質問者

お礼

ことこまかくご教授ありがとうございます。 hiddenを使って作成したら、問題なく要件を満たしました。 本当何回もありがとうございました。

その他の回答 (2)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

> IF文で得た変数を、Value値(URLに渡す内容)に、変数を入れたいと > 思っております。 > 現在は、URLにそのままPreviousYearが入ってしまうので、 > YY1、MM1などの変数のみを、URLに入れたいと思います。 ん~ 質問の趣旨がいまいち読み取れないのですが ... この『Value値』とは具体的な何を指すのでしょう SUB1に代入されるものということなのでしょうか HIDDEN属性の HDNに設定したいってことですか Postで行うのに『URLに入れたい』という意味が釈然としません

saddiq
質問者

補足

回答ありがとうございます。 バリュー値ですが、下記になります。 Value値=NextYearなどのsubmitのバリュー内になります。なので、今回で言う[NextYear,NextMonth…]などになります。 hiddenは、コメントアウトしてるので無視してください。紛らわしく申し訳ない。 こちらを、if文で変数(YY1、MM1など)に変更し、YY1などをNextYearに置き換えたいと思ってます。 イメージとしてはいかになります。 例 <input type="submit" value="NextYear" id=SUB1 name=SUB1> のNextYearの値を、YY1に変更したいと思ってます。 Submitを押した際、if文で変数(YY1など)の取得はできているのでIF文は機能しているのですが、IF文で得た変数(YY1,MM1など)が、Formのバリューの値にはいっていかないのですが、その際になにか必要な処理があるのでしょうか? 簡単に言うと、submitのValueに、YY1などの変数を入れたいのです。 hiddenを使ってもいいので、なにかいい案があったらお願いします。 最終的には、URLにhttp://hoge.asp?SUB1=YY1のようにして、1つのASPで、万年カレンダを作成しており、ボタンを押した時、URLに日付(YY1など)を渡して作成したいと思ってます。 まだ始めたばっかなのでうまく説明ができなく、なんども申し訳ないですが、ご回答お願いいたします。 

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

Formの送信方法をPOSTで行っているのに そのデータを受け取るのをQueryStringから取得しようとしているため 動作が思わしくないのでしょう POSTの場合は Request.Formで受け取る GETの場合は Request.QueryStringで受け取る といった具合にします

saddiq
質問者

お礼

redfox63さん、ご回答ありがとうございます。 PostでURLに渡してる内容を見るために、一度GETにした内容が残ってしまいましたが、現在はrequest.formに変更しております。 その、IF文で得た変数を、Value値(URLに渡す内容)に、変数を入れたいと思っております。 現在は、URLにそのままPreviousYearが入ってしまうので、YY1、MM1などの変数のみを、URLに入れたいと思います。 お手数ですが、再度お分かりでしたら教えてください。 よろしくお願いいたします