[1] [[HTML]] の[[フォーム]]では、[[制御子]]は[DFN[[[名前]]]]を持つことができます。
[17]
:状態:[[W3C]] [[勧告]]、[[WHATWG]] [[WD]]
:[[要素型名]]:
[CODE(HTMLe)@en[[QN[[[input]]] [http://www.w3.org/1999/xhtml]]]],
[CODE(HTMLe)@en[[QN[[[button]]] [http://www.w3.org/1999/xhtml]]]],
[CODE(HTMLe)@en[[QN[[[select]]] [http://www.w3.org/1999/xhtml]]]],
[CODE(HTMLe)@en[[QN[[[textarea]]] [http://www.w3.org/1999/xhtml]]]],
[CODE(HTMLe)@en[[QN[[[object]]] [http://www.w3.org/1999/xhtml]]]]
:[[属性名]]:[CODE(HTMLa)@en[[[name]]]]
([Q@en[name]] ([Q[名前]]) より)
:[[属性値]]:自由 (>>3)
:[[既定値]]:名前なし (>>11)
[2] 仕様書:
- [[HTML 4]]
-- 17.2 Controls
-- [CODE(HTMLe)[input]] 要素 [CODE(HTMLa)[name]] 属性
-- [CODE(HTMLe)[button]] 要素 [CODE(HTMLa)[name]] 属性
-- [CODE(HTMLe)[select]] 要素 [CODE(HTMLa)[name]] 属性
-- [CODE(HTMLe)[textarea]] 要素 [CODE(HTMLa)[name]] 属性
-- [CITE[17.13.2 Successful controls]]
- [[RFC 3106]]
- [[Web Forms 2.0]]
-- [CSECTION@en[2.5. Extensions to existing attributes]]
* 制御子名の指定
[10] 制御子名は、その制御子を定義する [CODE(HTMLa)[[[name]]]]
属性で指定します。メニュー制御子では、 [CODE(HTMLe)[[[select]]]]
要素の [CODE(HTMLa)[name]] 属性で指定します [SRC[HTML 4 17.13.2]]。
[11] 一般に [CODE(HTMLa)[name]] 属性は省略可能です。
制御子名を持たない制御子は、[[成功]]の対象になりません。
[SRC[HTML 4 17.13.2]]。
[14]
HTML 4 DTD の[[注釈]] (参考) には、
[Q[attribute name required for all but submit and reset]]
([CODE(HTML)[submit]] と [CODE(HTML)[[reset]]
以外では [CODE(HTMLa)[name]] 属性は必須)
と書かれています。
[15]
>>14 同じく、 [Q[submit as part of form]]
とも説明があります。
[[#comment]]
* 制御子名に使える文字
[3] HTML 4 仕様書では制御子名に使える文字は特に規定されていません。
HTML 的には何でもありということでしょうか。
但し、大文字と小文字は区別されません [SRC[HTML 4 17.4, 17.5, 17.6]]。
[[#comment]]
* 制御子名の名前空間
[4] 制御子名の適用範囲は、その制御子が属する [CODE(HTMLe)[[[form]]]]
要素内です [SRC[HTML 4 17.2]]。
普通制御子名は制御子ごとに異なる名前としますが、 [CODE(HTML)[[[checkbox]]]]
制御子などのように複数個の制御子に同じ名前を使えるものもあります。
[16]
@@ [CODE(HTML)@en[[[checkbox]]]], [CODE(HTML)@en[[[radio]]]]以外での重複は?
異なる種類間での重複は?
[[#comment]]
* 特殊な制御子名
[5] 正式な HTML 仕様にはありませんが、各種の実装では制御子名に特別な意味を持たせていることがあります。
[6] [CODE(XPath)[[CODE(HTML)[[[input]]]][@[CODE(HTML)[[[type]]]]='[CODE(HTML)[[[submit]]]]'] ]]
な要素の [CODE(HTMLa)[name]] 属性の値を [CODE(HTML)[navi_pos]] とすると、
[[iモード]]端末では位置情報を form の他の内容とともに送信します。
''DoCoMo Net - 製品・サービス - i-mode''
[7]
[SAMP(URI)[http://www.example.com/gps/serch.cgi?pos=N35.39.41.61E139.44.49.42&geo=wgs84&X-acc=3¶m=a]]
([CODE(HTML)[[CODE(HTMLa)[[[method]]]]=[[get]]]] の場合) のようになるそうです。
この挙動は [[HTML 4]] などの form submit
処理手順に反する重大な非互換変更です。
[9] [[WinIE]], [[Mozilla]], [[Opera]] をはじめとする多くの近代的 UA
は、 [CODE(HTML)[[[_charset_]]]] hack を実装しています。
これは、制御子名を [CODE(HTML)[_charset_]] として [CODE(HTMLa)[[[value]]]]
属性を省略した隠し制御子 ([CODE(HTML)[[[hidden]]]]) を作成すると、
フォーム提出時に使用した [[charset]] 名を報告させられるというものです。
[17]
[[RFC 3106]] は、
[CODE(HTML)@en[[[Ecom_]]]] で始まる幾つかの[[名前]]を[[予約]]しています。
[[著者]]は、 [CODE(HTML)@en[[[Ecom_]]]]
で始まる[[名前]]を [[RFC 3106]]
と矛盾した方法で使用[['''してはなりません''']]。
[SRC@en[WF2 2.5]]
[[#comment]]
* メモ
[12]
[CODE(HTMLe)[[[object]]]] 要素の定義では
[CODE(HTMLe)[[[input]]]] 要素の
[CODE(HTMLa)[[[name]]]] 属性の定義が参照されています
[SRC[HTML 4]]。
([[名無しさん]] [sage])
[13]
HTML 4 DTD の [CODE(HTMLe)[[[object]]]]
要素の宣言の[[注釈]] (参考) では
[Q[submit as part of form]]
と書かれています。
([[名無しさん]] [sage])
[18]
[[XHTML 1.0]] では[[素片識別子]]や[[閲覧文脈名]]として用いられる
[CODE(HTMLa)@en[[[name]]]] [[属性]]が[[非推奨]]とされているのですが、
[CODE(HTMLe)@en[[[object]]]] [[要素]]の [CODE(HTMLa)@en[[[name]]]]
[[属性]]はそれに含まれて''いません''。
;;
([[名無しさん]])
[19]
[[HTML 4.0]]、[[HTML 4.01]]、[[XHTML 1.0]] のいずれの[[厳密DTD]]、
[[移行用DTD]]、[[フレーム集合DTD]]のいずれでも、
[CODE(HTMLe)@en[[[object]]]] [[要素]]の [CODE(HTMLa)@en[[[name]]]] [[属性]]は定義されています。
また、 [[XHTML m12n]] の[[物体]][[モジュール]]でも定義されています。
いずれも[[非推奨]]では''ありません''。
([[名無しさん]])