[1] [[HTML]] の[[フォーム]]では、[[制御子]]は[DFN[[[名前]]]]を持つことができます。
[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]]
[[#comment]]
* 制御子名の指定
[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]] 属性は必須)
と書かれています。
([[名無しさん]] [sage])
[15]
>>14 同じく、 [Q[submit as part of form]]
とも説明があります。
([[名無しさん]] [sage])
[[#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]]]]
制御子などのように複数個の制御子に同じ名前を使えるものもあります。
[[#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]] 名を報告させられるというものです。
[[#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])