form要素
要素名 | バージョン | 開始タグ | 終了タグ | 分類/親 | 中身 |
---|---|---|---|---|---|
form | 2.0, 2.x, 3.2, 4.0, X1.0, X1.1 | 必須 | 必須 | %block; | (%block;|script)+ -(form) |
属性名 | バージョン | 属性値 | 既定値 | 備考 |
---|---|---|---|---|
action | 3.2, 4.0, X1.0, X1.1 | %URI; | #REQUIRED | server-side form handler |
method | 3.2, 4.0, X1.0, X1.1 | (GET|POST) | GET | HTTP method used to submit the form |
enctype | 3.2, 4.0, X1.0, X1.1 | %ContentType; | "application/x-www-form-urlencoded" | |
accept-charset | 4.0, X1.0, X1.1 | %Charsets; | #IMPLIED | list of supported charsets |
accept | 4.0, X1.0, X1.1 | %ContentTypes; | #IMPLIED | list of MIME types for file upload |
name | 4.0, X1.0, X1.1 | CDATA | #IMPLIED | name of form for scripting |
target | (4.0), (X1.0) | %FrameTarget; | #IMPLIED | render in this frame |
共通属性 …… %coreattrs;, %i18n;, %events;
formの解説
入力フォームの大枠を規定する要素です。普通、フォームの中には input要素や select要素などを用いてコントロールを配置し、ユーザーからのデータ入力を受け付けます。送信ボタンを押すとそのデータは送信されることになりますが、その送信先や送信の方法を form要素の属性値として指定する必要があります。
action属性は送信先の URI を指定します。普通は CGI のような、サーバ側でデータを受け取って処理できるものを送り先として指定することになるでしょう。昔は mailto: スキームの URI でメールアドレスを指定するという方法も定義されていたのですが、クライアント側でメーラーの設定がされていないと動作しなかったり、SMTP に 8bit の生データを流して文字化けしたりと、不都合が多かったものです。HTML4.01 では正式に (?) この動作は未定義となりましたので、仕様的にも動作の保証はくなりました。
method属性はデータの送信方法を指定します。値は get と post の二つで、これらはそれぞれ HTTP 要求メソッドの GET と POST に対応しています。GET と POST 以外のもの (HEAD, PUT, DELETE など) は指定できません。
enctype属性 は、データの MIMEタイプを指定するものです。既定値は application/x-www-form-urlencoded で、これはデータを URL エンコードします。通常はこのままで問題ありませんが、フォーム中に <INPUT type="file"> を含む場合は "multipart/form-data" を使用する必要があります。
HTML4.01 では name属性も追加されました。これでスクリプトで用いるための名前を付けることができるのですが、名前は id属性で指定することが推奨されています。name が追加されたのは既存のブラウザ実装との互換性のためです。
なお、HTML3.2 以降では、form要素の外にフォームコントロールを配置することもできます (HTML2.0 ではできませんでした)。これはスクリプトを起動するためのスイッチだとか、その結果表示だとかに使われるものです。しかしながら、HTML3.2 に対応していると言いつつ form の外に配置したコントロールを無視してしまう (手抜き実装の?) ブラウザも存在しますので、注意しましょう。
- 「form要素」にコメントを書く