[1] [[HTML]] の[[フォーム]]では、[[制御子]]は[DFN[[[名前]]]]を持つことができます。
制御子名は、普通制御子を定義する要素の [CODE(HTMLa)[name]] 属性で指定します。
[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]] 属性
[[#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]]
* メモ