form 要素

4.10.3 form 要素

カテゴリー
フロー・コンテンツ
この要素を使うことができるコンテキスト:
フロー・コンテンツが期待される場所
コンテンツモデル:
フロー・コンテンツ。ただし、form 要素が子孫に存在しないこと。
コンテンツ属性:
グローバル属性
accept-charset
action
autocomplete
enctype
method
name
novalidate
target
DOMインタフェース:
[OverrideBuiltins]
interface HTMLFormElement : HTMLElement {
           attribute DOMString acceptCharset;
           attribute DOMString action;
           attribute DOMString autocomplete;
           attribute DOMString enctype;
           attribute DOMString encoding;
           attribute DOMString method;
           attribute DOMString name;
           attribute boolean noValidate;
           attribute DOMString target;

  readonly attribute HTMLFormControlsCollection elements;
  readonly attribute long length;
  caller getter any (in unsigned long index);
  caller getter any (in DOMString name);

  void submit();
  void reset();
  boolean checkValidity();
};

form 要素は、フォーム関連要素のコレクションを表します。これらのいくつかは、処理のためにサーバーにサブミットすることができる編集可能な値を表すことができます。

accept-charset 属性には、サブミットに使われるべき文字エンコーディングを指定します。指定されれば、この値は、ユニークなスペース区切りトークンの順序セットでなければいけません。大文字・小文字は区別されません。それぞれのトークンは、ASCII互換文字エンコーディング参照 MIME 名に一致しなければいけません。大文字・小文字は区別されません[IANACHARSET]

name 属性は、forms コレクションの中にある form 要素の名前を表します。この値は空文字であってはならず、それが属する forms コレクションに form 要素があれば、その中でユニークでなければいけません。

autocomplete 属性は列挙属性です。この属性は 2 つの状態を持ちます。on キーワード は、on 状態に相当し、off キーワードは、off 状態に相当します。この属性を省略することも可能です。指定がない場合のデフォルトは on 状態です。off 状態とは、デフォルトで、フォーム内の input 要素が off にセットされた最終オートコンプリート状態を持つことを表します。on 状態とは、デフォルトで、フォーム内の input 要素が on にセットされた最終オートコンプリート状態を持つことを表します。

action, enctype, method, novalidate, target 属性は、フォーム・サブミット用の属性です。

form . elements

該当のフォームにあるフォーム・コントロールの HTMLCollection を返します。(歴史的理由からイメージ・ボタンを除きます。)

form . length

該当のフォームにあるフォーム・コントロールの数を返します。(歴史的理由からイメージ・ボタンを除きます。)

form[index]
form(index)

該当のフォームの中にある要素のうち、index 番目の要素を返します。(歴史的理由からイメージ・ボタンを除きます。)

form[name]
form(name)

フォームの中から、指定の ID または name 属性を持つフォームコントロールを返します。(歴史的理由からイメージ・ボタンを除きます。)

一度、特定の名前を使って要素が参照されたら、たとえその要素の実際の ID または name 属性の値が変更されたとしても、Document にその要素が存在し続ける限り、このメソッドから、その名前を使って、該当の要素を参照できます。

もし、いくつもの項目が一致してしまったら、該当の要素すべてを格納した NodeList オブジェクトが返されます。

ID または name 属性を持った要素が見つからなければ、null を返します。

form . submit()

該当のフォームをサブミットします。

form . reset()

該当のフォームをリセットします。

form . checkValidity()

フォームのコントロールがすべて妥当なら、true を返します。そうでなければ false を返します。

autocomplete IDL 属性は、同じ名前のコンテンツ属性を反映しなければいけません。ただし、既知の値に限定されます

name IDL 属性は、同じ名前のコンテンツ属性を反映しなければいけません。

acceptCharset IDL 属性は、accept-charset コンテンツ属性を反映しなければいけません。


elements IDL 属性は、Document ノードをルートとした HTMLFormControlsCollection を返さなければいけません。そのフィルターは、フォーム・オーナーform 要素となるリスト化要素に一致します。ただし、type 属性が Image Button 状態にある input 要素は除きます。これは、歴史的な理由によるもので、この特定のコレクションから除外されなければいけません。

length IDL 属性は、elements コレクションによって表されるノードの数を返さなければいけません。

インデックス付きプロパティのインデックス番号は、常に、elements 属性によって返されるオブジェクトによってその時点でサポートされるインデックス番号となります。

form 要素が インデックス化プロパティ取得のためにインデックス化されたとき、ユーザーエージェントは、引数にインデックスが指定されて呼び出されたとき、その elements コレクションで item メソッドによって返される値を返さなければいけません。

それぞれの form 要素は、名前を要素に結びづけるマッピングを持ちます。それを past names map といいます。それは、名前が変更されたときですら、コントロールの永続的な名前として使われます。

インデックス付きプロパティ名は、その時点で elements 属性によって返されるオブジェクトによってサポートされた名前の和集合です。そして、その時点で past names map にある名前です。

form 要素が 名前付きプロパティ取得のためにインデックス化される とき、ユーザーエージェントは、次の手順を実行しなければいけません:

  1. nameelements 属性によって返されるオブジェクトのインデックス付きプロパティ名のひとつなら、次の副手順を実行します。

    1. candidate を、elements 属性によって返されるオブジェクトにて引数に name を与えたときに namedItem() メソッドが返すオブジェクトとします。

    2. candidate が要素なら、name から、form 要素の past names map にある candidate へのマッピングを追加します。もし、同じ名前のエントリーがすでに存在していれば、置き換えます。

    3. candidate を返し、これらの手順を中止します。

  2. そうでなければ、name は、form 要素の past names map にあるエントリーのうちのひとつの名前となります。そのマップにある name と結び付けたオブジェクトを返します。

form 要素の past names map に列挙された要素が Document から削除されたら、そのエントリーは、そのマップから削除されなければいけません。


submit() メソッドは、呼び出されたら、その form 要素自身から form 要素をサブミットしなければいけません。その際には、scripted-submit フラグをセットします。

reset() メソッドは、呼び出されたら、次の手順を実行しなければいけません:

  1. form 要素がリセットのためにロックされているとして記録されているなら、これらの手順を中止します。

  2. form 要素を、リセットのためにロックされたと記録します。

  3. form 要素をリセットします。

  4. form 要素がリセットのためにロックされているとして記録されているのを解除します。

checkValidity() メソッドが呼び出されたら、ユーザーエージェントは、その form 要素の制約を静的にバリデーションします。そして、その制約バリデーションの結果が positive なら true を、negative なら false を返します。

この例は、2 つの検索フォームを示しています:

<form action="http://www.google.com/search" method="get">
 <label>Google: <input type="search" name="q"></label> <input type="submit" value="Search...">
</form>
<form action="http://www.bing.com/search" method="get">
 <label>Bing: <input type="search" name="q"></label> <input type="submit" value="Search...">
</form>

※ 原文:http://www.w3.org/TR/2011/WD-html5-20110525/forms.html#the-form-element