* フォーム被関連付け要素とフォーム所有者 [1] [DFN[[RUBYB[[[フォーム被関連付け要素]]]@en[form-associated element]]]]は、[[フォーム所有者]]を持つことができる[[要素]]です [SRC[>>3]]。[[フォーム被関連付け要素]]は [CODE(HTMLe)@en[[[form]]]] [[要素]]と関係を持つことができ、 これを[[要素]]の[DFN[[RUBYB[[[フォーム所有者]]]@en[form owner]]]]といいます [SRC[>>24]]。 ** 仕様書 - [2] [[Web Applications 1.0]] ([[HTML5]]) -- [3] '''''' --- [[フォーム被関連付け要素]] -- [24] '''''' --- [[フォーム所有者]] ** 所属要素 *** 所属する要素 - [4] [CODE(HTMLe)@en[[[button]]]] - [5] [CODE(HTMLe)@en[[[fieldset]]]] - [6] [CODE(HTMLe)@en[[[input]]]] - [7] [CODE(HTMLe)@en[[[keygen]]]] - [8] [CODE(HTMLe)@en[[[label]]]] - [9] [CODE(HTMLe)@en[[[meter]]]] - [10] [CODE(HTMLe)@en[[[object]]]] - [11] [CODE(HTMLe)@en[[[output]]]] - [12] [CODE(HTMLe)@en[[[progress]]]] - [13] [CODE(HTMLe)@en[[[select]]]] - [14] [CODE(HTMLe)@en[[[textarea]]]] [15] [CODE(HTMLe)@en[[[option]]]], [CODE(HTMLe)@en[[[optgroup]]]], [CODE(HTMLe)@en[[[legend]]]], [CODE(HTMLe)@en[[[datalist]]]] は含まれていません。 *** 所属する小グループ - [17] [[フォーム被関連付け要素]] -- [18] [[被列挙要素]] -- [19] [[名札付け可能要素]] -- [20] [[提出可能要素]] --- [22] [[ボタン]] ---- [23] [[提出ボタン]] -- [21] [[再設定可能要素]] ** 性質 [16] [[フォーム被関連付け要素]]の[[フォーム所有者]]は [CODE(DOMa)@en[[[form]]]] [[IDL属性]]を通じてアクセスできます。また、[[フォーム所有者]]を明示的に指定するための [CODE(HTMLa)@en[[[form]]]] [[内容属性]]を持っています。 * [CODE(HTMLa)@en[form]] 属性 (HTML) [40] [[HTML]] の[[フォーム制御子]]等の [DFN[[CODE(HTMLa)@en[form]] [[属性]]]]は、 [[フォーム制御子]]が所属する[[フォーム]]を指定します。 [41] :状態:[[WHATWG]] [[WD]] :[[要素型]]:[[フォーム制御子]]、[CODE(HTMLe)@en[[[fieldset]]]] :[[属性名]]:[CODE(HTMLa)@en[[[form]]]] ([Q@en[[[form]]]] ([Q@en[[[フォーム]]]]) より) :[[属性値]]:[CODE@en[[[IDREFS]]]] (>>42) :[[既定値]]:([[先祖]]により決定) (>>43) [44] 仕様書: - [[Web Forms 2.0]] -- [CSECTION@en[2.8. The [CODE(HTMLa)@en[[[form]]]] attribute]] ** 属性値 [42] [CODE(HTMLa)@en[[[form]]]] [[属性値]]は、 零個以上の [CODE(HTMLe)@en[[[form]]]] [[要素]]の [CODE(XML)@en[[[ID]]]] の[[空白]]区切り[[並び]]です。 [SRC@en[WF2 2.8]] [43] [[フォーム制御子]]は通常[[先祖]]の [CODE(HTMLe)@en[[[form]]]] と関連付けられますが、 [CODE(HTMLa)@en[[[form]]]] [[属性]]はこれを上書きし、 関連付ける[[フォーム]]を明示的に指定します。 [SRC@en[WF2 2.8]] [46] 指定された [CODE(XML)@en[[[ID]]]] のうち、 [[文書]]中の[[要素]]を[[識別]]しないものや、 [CODE(HTMLe)@en[[[form]]]] [[要素]]を[[識別]]しないものは、 無視[['''しなければなりません''']]。 [SRC@en[WF2 2.8]] [47] [[空文字列]]を[[属性値]]として指定する (か、 >>46 の無視の結果 [CODE(XML)@en[[[ID]]]] が1つも含まれない) と、 [[フォーム制御子]]はどの[[フォーム]]にも関連付けられていない状態となります。 [SRC@en[WF2 2.8]] [48] [CODE(HTMLe)@en[[[fieldset]]]] [[要素]]に指定した場合は、 その[[子孫]]の[[フォーム制御子]]を関連付ける[[フォーム]]を指定します。 [SRC@en[WF2 2.8]] ;; [[子孫]]の[[フォーム制御子]]や [CODE(HTMLe)@en[[[fieldset]]]] で更に [CODE(HTMLa)@en[[[form]]]] が指定されている場合は、 そちらが優先します。 [[#comment]] ** フォームの決定 [49] [[利用者エージェント]]は、[[フォーム制御子]]や [CODE(HTMLe)@en[[[fieldset]]]] [[要素]]に関連付ける[[フォーム]]を次のように決定[['''しなければなりません''']] [SRC@en[WF2 2.8]]: = [CODE(HTMLa)@en[[[form]]]] [[属性]]があれば、 それに従います。 = [[直近]]の[[先祖]]である [CODE(HTMLe)@en[[[form]]]] [[要素]]か、 [CODE(HTMLa)@en[[[form]]]] [[属性]]がある [CODE(HTMLe)@en[[[fieldset]]]] [[要素]]があれば、 その[[フォーム]]とします。 = なければ、どの[[フォーム]]にも関連付けないとします。 [[#comment]] ** フォーム操作との関係 [50] [[提出]][[ボタン]] ([CODE(HTML)@en[[[submit]]]]) や[[画像]] ([CODE(HTMLe)@en[[[image]]]]) は、 関連付けられた最初の[[フォーム]]のみを[[提出]][['''しなければなりません''']]。 [SRC@en[WF2 2.8]] [51] [[再設定]][[ボタン]] ([CODE(HTML)@en[[[reset]]]]) は、関連付けられたすべての[[フォーム]]を[[再設定]][['''しなければなりません''']]。 [SRC@en[WF2 2.8]] [[#comment]] ** 誤り処理 [52] [[文書]]中に複数現れる [CODE(XML)@en[[[ID]]]] が [CODE(HTMLa)@en[[[form]]]] に指定された時に選択される[[フォーム]]は、 [CODE(DOMm)@en[[[getElementById]]]] [[メソッド]]と同じものと[['''しなければなりません''']]。 [SRC@en[WF2 2.8]] ;; [CODE(DOMm)@en[[[getElementById]]]] [[メソッド]]は、 その場合の動作は[[未定義]]としています。 しかし、 [CODE(HTMLa)@en[[[form]]]] もそれと同じように動作しなければならない、ということです。 [53] [CODE(HTMLa)@en[[[form]]]] [[属性値]]中に同じ[[フォーム]]を複数回指定[['''してはなりません''']]。 [[利用者エージェント]]は、その場合、 最初の指定を除き、無視[['''しなければなりません''']]。 [SRC@en[WF2 2.8]] [[#comment]] ** 歴史 [56] この[[属性]]は [[Web Forms 2.0]] で導入されました。 [61] [CITE[Cougar: ideas for ,]] ([TIME[2004-08-06 01:45:46 +09:00]] 版) [CODE(HTMLa)@en[[[form]]]] [[属性]]に相当する [CODE(HTMLa)@en[[[for]]]] [[属性]]が提案されていました。 [70] 一瞬だけ [[HTML5]] で [CODE(HTMLe)@en[[[legend]]]] [[要素]]にも [CODE(HTMLa)@en[[[form]]]] [[属性]]が追加されていましたが、すぐに削除されました。 ** 例 [54] [PRE(HTML example code)[
Name Value Action
]PRE] [[列]]ごとに別の[[フォーム]]になっています。 [SRC@en[WF2 2.8]] [CODE(HTMLe)@en[[tbody]]]] の[[内容モデル]]の定義から、 [[Web Forms 1.0]] ではこのように[[表]]と[[フォーム]]を組合せることができませんでした。 [55] [PRE(HTML example code)[
]PRE] テキスト欄は2つの[[フォーム]]に関連付けられています。 また、[[フォーム]]が3つあり、それぞれが[[提出]][[ボタン]]を持っています。 [SRC@en[WF2 2.8]] [Q@en[Google]] と [Q@en[Yahoo]] の2つのボタンは、 それぞれ別の[[フォーム処理エージェント]]に、 同じテキスト欄の内容を[[提出]]します。 最初の [Q@en[Test]] は、 [[Web Forms 2.0]] に適合した[[利用者エージェント]]では、 テキスト欄の内容を[[提出]]しません。 未対応の[[利用者エージェント]]はテキスト欄の内容を[[提出]]します。 これは古い[[利用者エージェント]]のための fallback として使うことができます。