2007/07/10

[coldfusion]新人研修-submit後のform変数に関して

formタグの中を送信したとき、例えば、formタグ内にあるINPUTのtypeがsubmitのボタンをクリックした時や、JavaScriptで、document.formのname.submit()などで情報が送信されたき、CFは、formの中にあるINPUTタグの値を、form.inputタグのnameという形で、構造体としてキャッチします。

例えば、下のソースを見てみましょう。

<FORM name="Frm_Main" action="" method="post">
  <INPUT type="text" name="hoge" value="1">
  <BR>
  <INPUT type="checkbox" name="test_checkbox" value="2">
  <INPUT type="checkbox" name="test_checkbox" value="3">
  <INPUT type="checkbox" name="test_checkbox" value="4">
  <BR>
  <INPUT type="radio" name="test_radio" value="a">
  <INPUT type="radio" name="test_radio" value="b">
  <INPUT type="radio" name="test_radio" value="c">
  <BR>
  <SELECT name="test_select">
    <OPTION value="apple">りんご</OPTION>
    <OPTION value="lemon">レモン</OPTION>
    <OPTION value="orange">オレンジ</OPTION>
  </SELECT>
  <INPUT type="submit" value="Run" >
</FORM>

上の場合、submitボタンを押した場合、どうなるでしょうか??

一つずつ確認していきたいと思います。

まず、type=textの場合ですが、そのままの値を保持します。
よって、

< CFSET cv_hoge = Form.hoge>

で値を取得することができます。

次にチェックボックスですが、以下の場合に分かれます。

1.何もチェックを入れていない場合
2.一つだけチェックを入れている場合
3.複数チェックを入れている場合

1の場合、form変数自体、何も値を保持していないので、form.変数名で値を取得することができません。
(そもそも、値自体がない。)

2の場合、form.変数名で値を取得することができます。

3ですが、2と同様、form.変数名で値を取得することができるのですが、2と違うのは、listとして取得する点が違っています。

type=radioと、selectボックスですが、選択された値のみform.変数名で取得することができます。

form.変数名は、プログラミングをする上でとても大切な構造体なので、これを機にマスターしたいっすね。

0 コメント:

コメントを投稿