<FORM>NN すべて IE すべて HTML すべて  

<FORM>...</FORM>

HTML 終了タグ : 必要  

ページのユーザーとサーバーとの間の通信における HTML フォームにとって重要なものですが、その中心にある form 要素は制御のコンテナ (入れ物) にすぎません。すべてではありませんが、ほとんどのドキュメント上のフォームコントロールは input 要素で作成されます。input 要素でユーザーがサーバーへ送信しない場合 (クライアント側のスクリプトでユーザーの操作が必要な場合など) にも、input 要素は form 要素内にあります。Navigator 4 以前で表示する場合は必ず form 要素内にネストされます。

ドキュメントで使用する form 要素の数には制限はありませんが、クライアントによっては一度に 1 つのフォームからのコントロール設定しか送信しないことがあります。そのため、一連のフォームコントロールを複数の form 要素に分けるのは、コントロールグループが互いに独立して送信し合えるときのみにします。単一のフォームを使用しながら、論理上または構造上のグループコントロールが必要な場合、fieldset 要素を使用して必要なコントロールのサブグループを作成します。

フォームをサーバーに送信すると、指定されている name 属性を持つすべてのコントロールはその名前と値の処理のために「名前/値」のペアをサーバーに渡します。この操作は電子メールの添付ファイルまたはブラウザの電子メールモジュールによるメッセージでも行えます。サーバーで実行している CGI (Common Gateway Interface) プログラムは「名前/値」のペアをその後の処理 (サーバーデータベースにレコードを追加、またはキーワード検索を開始など) を行うために許可したり、調べたりできます。サーバープログラムは action 属性に指定されているプログラムへの URL によって呼び出されます。

ブラウザでの送信処理にはいくつかの高度に定義された手順があります。フォームデータを収集するブラウザによって開始される処理は、フォームコントロールの「名前/値」のペアで設定されます。名前は name 属性に指定された値で決まります。コントロールの値はコントロールのタイプによって異なります。たとえば、テキスト入力要素の値は送信時にテキストボックスに表示されるコンテンツです。ラジオグループ内のラジオボタン (すべての name 属性に同じ値が指定される) では、選択したラジオボタンの value 属性に指定した値はラジオグループの「名前/値」のペアに挿入されます。

W3C 勧告では、フォームコントロールの「名前/値」のペアでは id 属性を使用することを推奨しています。ただし、バージョン 6 のブラウザでは、送信された「名前/値」のペアの識別子として name 属性のみが認識されます。

送信の 2 番目の手順は各「名前/値」のペアのテキストをエンコードすることです。+ 記号が各スペース文字の代わりに使用されます。RFC 1738 で定義されている予約文字はエスケープされ、その他の英数字以外の文字は %HH の形式の 16 進数表示に変換されます。この場合、HH は ASCII 文字値の 16 進数コードです。「名前/値」のペアの名前と値のコンポーネントは = 記号で区切られ、各「名前/値」のペアはアンパサンド (&) で区切られます。

最後の手順では、method 属性の設定でエスケープされたフォームデータのセットがサーバーに送信される方法を指定します。getmethod を使用すると、フォームデータのセットは ? で区切られ、action 属性に指定した URL に追加されます。postmethod と既定値の enctype を使用すると、データセットはサーバーへの通常のメッセージとして送信されます。送信されるデータは、GET メソッドを使用した場合は文字長の制限がありますが、POST メソッドを使用した場合は文字長の制限がなく、ブラウザの [アドレス] ボックスにエコー表示されません。

フォームでの Enter キーのデフォルトの動作は標準の動作と同じです。単一のテキスト input 要素からなるフォームの場合、Enter キーまたは Return キーを押すとユーザーが submit ボタン要素をクリックしたときのように、自動的にフォームを送信します。2 つ以上のテキスト input 要素から成るフォームの場合、Enter キーまたは Return キーを押してもフォームを自動的に送信しません。ただし、使用しているブラウザが Macintosh 版 IE の場合は除きます。

フォームの送信のキャンセルは、最新のブラウザでは認証確認を行うスクリプトを使用して行うか、onsubmit イベントハンドラーで実行するその他の機能を使用して行います。このイベントはフォームを送信する前に行われます。イベントハンドラーの評価の結果が false の場合、フォームは送信されず、ユーザーはフォーム要素の編集を続けることができます。

 
 
<FORM name="orders" method="POST" action="http://www.giantco.com/cgi-bin/order">
...
</FORM>
 
オブジェクト参照
 
[window.]document.forms[i]
[window.]document.forms[formName]
[window.]document.formName
[window.]document.getElementById(elementID)
 
要素固有の属性
 
acceptaccept-charsetacceptcharsetactionautocomplete
enctypemethodnametarget
 
要素固有のイベントハンドラー属性
 
ハンドラーNNIEHTML
onreset344
onsubmit234
acceptNN なし IE なし HTML 4  

accept="MIMETypeList"

オプション  

file タイプの input 要素で使用するために用意されている accept 属性を使用すると、フォームを送信するときにサーバーにアップロードできるファイルの MIME タイプを指定できます。予想されるこの属性の用途は、アップロードするファイルを選択するためのファイルダイアログにリストされたファイルタイプをフィルタすることです。この場合、この属性は使用可能な MIME タイプ以外のファイルがサーバーにも送信されないようにクライアント側のファイルタイプの認証を行います。

 
 
<FORM accept="text/html, image/gif" ...>...</FORM>
 

大文字と小文字を区別しない MIME タイプ (コンテンツタイプ) 値。複数のアイテムの場合はコンマ区切りリストを使用できます。登録済みの MIME タイプの一覧については、ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/ を参照してください。

 
既定値

なし

accept-charset, acceptcharsetNN 6 IE 5 HTML 4  

accept-charset="MIMETypeList"

オプション  

情報を解釈する機能を持つサーバーに対する、クライアントフォームから受信する必要のある文字セットに関しての助言的な属性です。HTML 4 の仕様にはハイフン付きの属性名が定義されていますが、Windows 版 IE 5 以降および Netscape 6 ではハイフンなしの属性名が実装されています。

 
 
<FORM accept-charset="it, es" ...>...</FORM>
 

文字セットレジストリ (ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets) にあるエイリアス。大文字と小文字は区別されません。複数の文字セットはコンマで区切って指定できます。unknown は予約されている値で、クライアントへのフォームを生成するのに使用するサーバーの文字セットを示します。

 
既定値

unknown

actionNN すべて IE すべて HTML すべて  

action="URL"

オプション  

フォーム送信時にアクセスする URL を示します。フォームの処理用にサーバーに送信するとき、URL は CGI プログラムまたはサーバー側のスクリプトを含む HTML ページを指定できます。このスクリプトは HTML ページがクライアントにダウンロードされる前にサーバーで実行されます。フォームが送信されると、サーバーは HTML ページをクライアントで表示するために戻します。返される表示を異なるフレームまたはウィンドウに送る場合、target 属性にその送り先を指定をする必要があります。

mailto: URL を action 属性値の代わりに使用することもできます。Navigator ではフォームの「名前/値」のペアを電子メールメッセージの添付ドキュメントにします。つまり、enctype 属性が "text/plain" に設定されているメッセージ本文の添付ドキュメントにし、enctype 属性を action 属性よりも前に記述します。プライバシーへの配慮から、クライアントユーザーはまもなく送信される電子メールについて通知され、必要に応じてメッセージをキャンセルできます。

Netscape 6 および 7 では、フォームのメール送信機能は基本的に無効になっています。ブラウザによって実装に大きな違いがあるので、多くのユーザーからフォーム送信を受け取れない可能性があります。フォームの CGI 処理について詳しくない場合は、フォームを電子メールで転送するサードパーティ製の FormMail サービスを参照してください。

action 属性を設定しないでフォームが送信された場合、現在のページが再ロードされ、すべてのフォーム要素を既定値に戻します。

 
 
<FORM method="POST" action="http://www.giantco.com/orders/order.html">
 

絶対 URL または相対 URL

 
既定値

なし

 
オブジェクト参照
 
[window.]document.forms[i].action
[window.]document.forms[formName].action
[window.]document.formName.action
[window.]document.getElementById(elementID).action
autocompleteNN なし IE 5 HTML なし  

autocomplete="featureSwitch"

オプション  

IE ユーザーがフォームのオートコンプリートの設定を有効にしている場合、autocomplete 属性はフォーム全体の機能に影響します。環境設定のエントリのいずれかと一致する特定の名前のフィールドを、ブラウザであらかじめ入力したり、入力を支援したりできるようにするには、テキストおよびパスワードタイプの input 要素の vcard-name 属性も設定する必要があります。

 
 
<FORM method="POST" action="register.pl" autocomplete="on">
 

定数値 : on | off

 
既定値

off

 
オブジェクト参照
 
[window.]document.forms[i].autoComplete
[window.]document.forms[formName].autoComplete
[window.]document.formName.autoComplete
[window.]document.getElementById(elementID).autoComplete
enctypeNN すべて IE すべて HTML すべて  

enctype="MIMEType"

オプション  

フォームと共にサーバーに送信するデータの MIME タイプを設定します。method 属性が POST に設定されている通常のフォーム送信の場合、既定値を使用すれば適切なコンテンツタイプを指定できます。ファイル入力要素を含む場合、enctype 属性に"multipart/form-data" を指定します。

 
 
<FORM method="POST" enctype="text/plain" action="mailto:orders@giantco.com">
...
</FORM>
 

MIME タイプ (コンテンツタイプ) 値。複数のアイテムの場合はコンマ区切りリストを使用できます。

 
既定値

application/x-www-form-urlencoded

 
オブジェクト参照
 
[window.]document.forms[i].encoding
[window.]document.forms[formName].encoding
[window.]document.formName.encoding
[window.]document.getElementById(elementID).encoding
langNN 3 IE 4 HTML 4  

lang="languageCode"

オプション  

要素の属性値およびコンテンツに使用される言語。ブラウザはこの情報を使用して、合字 (特定のフォントでサポートされたり、書き言葉で必要になった場合)、疑問符、およびハイフネーションの処理などの詳細に関して、コンテンツの適切な表示を行います。その他のアプリケーションや検索エンジンでは、スペルチェック辞書の選択やインデックスの作成にこの情報を利用する場合があります。

 
 
<SPAN lang="de">Deutsche Bundesbahn</SPAN>
 

大文字と小文字を区別しない言語コード

 
既定値

ブラウザの既定値

 
オブジェクト参照
 
[window.]document.getElementById(elementID).lang
methodNN すべて IE すべて HTML すべて  

method="GET" | "POST"

オプション  

フォームの送信方法には、GETPOST の 2 種類の HTTP メソッドがあります。どちらのメソッドを使用するかによって、フォーム要素のデータを action 属性の URL に追加してサーバーに送信する (GET) か、トランザクションメッセージのボディに含めて送信する (POST) かが決まります。実際には、action 属性と method 属性が form 要素で設定されていない場合は、フォームがそのドキュメントを無条件に再度読み込んでフォームコントロールを既定値に戻します。

 
 
<FORM method="POST" action="http://www@giantco.com/orders/order.html">
...
</FORM>
 

GET または POST のいずれかの定数値。ブラウザは値の大文字小文字を認識します。

 
既定値

GET

 
オブジェクト参照
 
[window.]document.forms[i].method
[window.]document.forms[formName].method
[window.]document.formName.method
[window.]document.getElementById(elementID).method
nameNN 2 IE 3 HTML なし  

name="elementIdentifier"

オプション  

form 要素全体に識別子を指定します。この値は、フォームまたはネストされているコントロールを参照する、古いブラウザ用のスクリプトを作成するときに特に便利です。新しいブラウザではこの用途に推奨される id 属性をサポートしていますが、フォームの送信にはまだ name 属性が必要です。

 
 
<FORM name="orders" id="orders" method="POST"
action="http://www.giantco.com/cgi-bin/order">
...
</FORM>
 

大文字と小文字を区別する識別子

 
既定値

なし

 
オブジェクト参照
 
[window.]document.forms[i].name
[window.]document.forms[formName].name
[window.]document.formName.name
[window.]document.getElementById(elementID).name
targetNN すべて IE すべて HTML すべて  

target="windowOrFrameName"

オプション  

フォームの送信の処理後にサーバーから返される HTML ドキュメントが現在のものとは異なるウィンドウやフレームに読み込まれる場合、target 属性に読み込み先としてウィンドウ名やフレーム名を指定できます。ターゲットフレーム名は識別子としてフレームとウィンドウに指定する必要があります。まず、frame 要素の name 属性にフレームに名前を指定します。次に、window.open() スクリプトメソッドの 2 番目のパラメータに新規ウィンドウ名を指定します。この属性を指定しないと、返されるドキュメントが、form 要素を含んだドキュメントを置き換えます。既存のフレームやウィンドウ以外の識別子を指定すると、返されるドキュメント用に新規ウィンドウを開きます。

フォームがサブウィンドウにあり、ターゲットをメインウィンドウにする場合は、まずスクリプトを使用してメインウィンドウの name プロパティに識別子を指定する必要があります。この名前をフォームの target 属性の値として使用します。

フレームおよびウィンドウは純粋なドキュメントマークアップの対象範囲外であるため、HTML 4 および XHTML の Strict DTD ではすべての要素の target 属性をサポートしていません。実際、フレームセットドキュメントは Strict DTD では妥当性が検証されません。HTML 4 および XHTML に別に Frameset DTD が定められているのはこのためです。ドキュメントはこのような Strict DTD で妥当性を検証する必要があり、同時にターゲットもサポートする場合は、ページが読み込まれた後でリンク、イメージマップ、およびフォームの target プロパティを設定するスクリプトを使用します。

form 要素には 1 つの返されるドキュメントと 1 つのターゲットのみを使用できます。フォームの送信によって複数フレームのコンテンツを変更するには、返されるドキュメントの onload イベントハンドラーが異なるフレームにドキュメントを読み込むか動的に書き込むことを前提にして、返されるドキュメントにスクリプトを含めることができます。各フレームの location.href プロパティに目的の URL を設定します。

 
 
<FORM method="POST" action="http://www.giantco.com/cgi-bin/order" target="new">
...
</FORM>
 

フレーム名またはウィンドウ名がターゲット要素の name 属性に指定されている場合の大文字と小文字を区別する識別子。次の 4 つのターゲット名が予約されており、定数値として使用されます。

 
既定値

_self

 
オブジェクト参照
 
[window.]document.forms[i].target
[window.]document.forms[formName].target
[window.]document.formName.target
[window.]document.getElementById(elementID).target