[1]
[[フォーム]]を[DFN[[RUBYB[提出] [submit]]]]すると、
[[成功]]制御子の[[制御子名]]と[[現在値]]の組が[[フォーム処理エージェント]]に渡されます。 [SRC[HTML 4 17.2, 17.13]]

* 仕様書

[REFS[
- [38] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-06-04 03:01:52 +09:00]]) <https://html.spec.whatwg.org/#form-submission-2>
]REFS]

* 提出の指示

[152] 
[[フォーム提出]]は、次の手段で呼び出すことが出来ます。

[FIG(list middle)[ [153] [[フォーム提出]]の実施
- [[提出ボタン]] ([CODE[<input type=submit>]], [CODE[<button type=submit>]])
-- [[活性化動作]] (ボタン押下)
-- [[既定ボタン]]呼び出し
- [[[CODE[submit]] メソッド][form.submit]]
- [[[CODE[requestSubmit]] メソッド][requestSubmit]]
]FIG]

* フォームの提出

[39] [DFN[[RUBYB[フォームの提出]@en[form submission]]]]は、
次の入力を受け取ります。
[FIG(list members)[
: [VAR[フォーム]] : [CODE(HTMLe)@en[form]] [[要素]]。
: [VAR[提出子]] : [[フォーム]]の[[提出]]元の[[要素]] (普通は[[ボタン]])。
: [VAR[[CODE(DOMm)@en[submit]] [[メソッド]]からの[[提出]]フラグ]] : [[boolean]]。
既定値は[[偽]]。
]FIG]

[40] 次のようにしなければ[MUST[なりません]] [SRC[>>38]]。

[FIG(steps)[
= [41] [VAR[フォーム]]の[F[navigateできない]]が[[真]]の場合、
== [121] ここで停止します。
= [146] [VAR[フォーム]]の[F[constructing entry list]]が[[真]]の場合、
== [147] ここで停止します。
= [43] [VAR[フォーム文書]]を、[VAR[フォーム]]の[F[節点文書]]に設定します。
= [42] [VAR[フォーム文書]]の[F[活性砂箱化フラグ集合]]の[F[砂箱化フォーム閲覧文脈フラグ]]が設定されている場合、
== [46] ここで停止します。
= [155] 
[VAR[フォーム閲覧文脈]]を、
[VAR[フォーム文書]]の[F[閲覧文脈]]に設定します。
= [48] [VAR[[CODE(DOMm)@en[submit]] [[メソッド]]からの[[提出]]フラグ]]が[[偽]]の場合、
== [156] 
[VAR[フォーム]]の[F[提出イベント群発火中]]が[[真]]の場合、
=== [157] ここで停止します。
== [158] 
[VAR[フォーム]]の[F[提出イベント群発火中]]を、
[[真]]に設定します。
== [49] [VAR[提出子]]の[F[非検証状態]]が[[偽]]なら、
=== [50] [VAR[結果]]を、[VAR[フォーム]]について[[制約群を対話的に検証]]した結果に設定します。
=== [51] [VAR[結果]]が[[偽]]なら、
==== [53] [VAR[フォーム]]の[F[提出イベント群発火中]]を、
[[偽]]に設定します。
==== [52] ここで停止します。
== [161] 
[VAR[提出子]]が[VAR[フォーム]]の場合、
=== [160] 
[VAR[提出子ボタン]]を、
[VAR[フォーム]]に設定します。
== [162] それ以外の場合、
=== [163] 
[VAR[提出子ボタン]]を、
[VAR[提出子]]に設定します。
== [54] [VAR[結果]]を、[[イベントを発火]]した結果に設定します。
[FIG(list members middle)[

: [VAR[[[イベントインターフェイス]]]] :
[CODE[SubmitEvent]]
: [VAR[[[イベント型]]]] : [CODE[submit]]
: [VAR[[[イベント対象]]]] : [VAR[フォーム]]
: [VAR[[[bubbles]]]] : [[真]]
: [VAR[[[cancelable]]]] : [[真]]
: [VAR[[CODE[submitter]]]] :
[VAR[提出子ボタン]]

]FIG]
== [164] 
[VAR[フォーム]]の[F[提出イベント群発火中]]を、
[[偽]]に設定します。
== [55] [VAR[結果]]が[[偽]]の場合、
=== [56] ここで停止します。
== [44] [VAR[フォーム]]の[F[navigateできない]]が[[真]]の場合、
=== [45] ここで停止します。
= [57] [VAR[フォームデータ]]を、[VAR[フォーム]]と[VAR[提出子]]について[[フォームデータ集合を構築]]した結果に設定します。
= [148] [VAR[フォーム]]が[[navigateできない]]場合、
== [149] ここで停止します。
= [58] [VAR[符号化]]を、[VAR[フォーム]]について[[フォームの符号化を選ぶ]]処理を実行した結果に設定します。
= [59] [VAR[作用]]を、[VAR[提出子]]の[F[作用][action=""]]に設定します。
= [60] [VAR[作用]]が[[空文字列]]なら、
== [61] [VAR[作用]]を、[VAR[フォーム文書]]の[F[URL][文書の番地]]に設定します。
= [62] [VAR[URL]]を、[VAR[作用]]を[VAR[提出子]]の[F[節点文書]]に対して[[構文解析][URLの構文解析]]した結果に設定します。
= [63] [VAR[URL]]が[[失敗]]なら、
== [64] ここで停止します。
= [69] [VAR[対象]]と[VAR[[[置換有効]]]]と[VAR[[[利用者]]が[[閲覧文脈]]を明示した]]と
[VAR[noopener]]
を、
[[閲覧文脈の選択]]の結果に設定します。
[FIG(list members)[
: [VAR[要素]] : [VAR[提出子]]
: [VAR[利用者指示]] : [VAR[イベント]]
]FIG]
= [68] [VAR[対象]]が [CODE[null]] の場合、
== [72] ここで停止します。
= [73] [VAR[フォーム文書]]の [F[completely loaded]] が[[偽]]で、
[VAR[[CODE(DOMm)@en[submit]] [[メソッド]]からの[[提出]]フラグ]]が[[真]]の場合、
== [76] [VAR[置換有効]]を、[[真]]に設定します。
= [79] [VAR[提出子]]の[F[メソッド][要求メソッド]]により、
[FIG(switch)[
: [CODE[GET]] : >>84 へ
: [CODE[POST]] : >>85 へ
: [[ダイアログ][<dialog>]] : >>80 へ
]FIG]
]FIG]

[159] 
[[フォーム]]は、
[DFN[[F[[RUBYB[[[提出イベント群発火中]]][firing submission events]]]]]]を持ちます。
[SRC[>>38]]
初期値は[[偽]]です。

* フォーム検証

[9]
文章入力制御子の入力長制御を完全に行えないなど、環境の事情によっては提出の際に
[CODE(HTMLa)[[[maxlength]]]] 属性に基づく検査が必要かもしれません。
(UA の実装方法によっては、[[初期値]]が [CODE(HTMLa)[maxlength]] を満たさない場合やスクリプトによる変更があった場合にも注意が必要です。)

* 提出のための直列化

[HISTORY[
[7]
HTML 4 が[Q[確立された慣習]]として対応することを要求している
[SRC[HTML 4 17.13.3, 17.13.4]] のは、次の場合だけです。
,[CODE(HTMLa)[action]]	,[CODE(HTMLa)[method]]	,[CODE(HTMLa)[enctype]]	,その他
,[[HTTP]] URI	,[CODE(HTML)[[[get]]]]	,[CODE(MIME)[[[application/x-www-form-urlencoded]]]]	,フォーム・データは ASCII 文字のみ
,HTTP URI	,[CODE(HTML)[[[post]]]]	,[CODE(MIME)[[[application/x-www-form-urlencoded]]]]	,フォーム・データは ASCII 文字のみ
,HTTP URI	,[CODE(HTML)[[[post]]]]	,[CODE(MIME)[[[multipart/form-data]]]]

これも含めて、様々な組合せが利用されています。

使用例のある URI scheme:
- [CODE(URI)[[[http]]:]] (HTTP)
- [CODE(URI)[[[https]]:]] (HTTP over [[TLS]])
- [CODE(URI)[[[file]]:]] (ファイル)
- [CODE(URI)[[[mailto]]:]] (電子メイル)
- [CODE(URI)[[[data]]:]] (データ)
- [CODE(URI)[[[ftp]]:]] ([[FTP]])
- [CODE(URI)[[[sms]]:]] ([[SMS]])
- [CODE(URI)[[[smsto]]:]] ([[SMS]])
- [CODE(URI)[[[javascript]]:]] ([[ECMAScript]])
- [CODE(URI)[[[device]]:]] (装置)
- [CODE(URI)@en[[[location]]:]] ([[位置情報]]付き [[HTTP]])

[25] 使用例のある媒体型:
[FIG(short list)[
- [CODE(MIME)[[[application/x-www-form-urlencoded]]]]
- [CODE(MIME)[[[application/sgml-form-urlencoded]]]]
- [CODE(MIME)[[[application/x-www-form+xml]]]]
- [CODE(MIME)[[[text/plain]]]]
- [CODE(MIME)[[[multipart/form-data]]]]
- [CODE(MIME)[[[application/vnd.wap.multipart.form-data]]]]
- 
[11]
[CODE(MIME)[[[application/vnd.wap.wml.form.urlencode]]]]
- [20] [CODE(MIME)@en[[[application/x-w3-isindex]]]]
[SRC@en[[[Emacs/W3]]]]
- [21] [CODE(MIME)@en[[[application/w-www-form-data]]]]
[SRC@en[[[Emacs/W3]]]]
- [23] [CODE(MIME)@en[[[application/x-gopher-query]]]]
[SRC@en[[[Emacs/W3]]]]
- [24] [CODE(MIME)@en[[[application/gopher-ask-block]]]]
[SRC@en[[[Emacs/W3]]]]
]FIG]

;; [26] [[フォームデータ集合]]に使われる [[MIME型]]の一覧は、
[REFS[
- [27] [CITE@en[data-web-defs/mime-types.txt at master · manakai/data-web-defs]] ([TIME[2015-04-11 20:50:07 +09:00]] 版) <https://github.com/manakai/data-web-defs/blob/master/doc/mime-types.txt>
]REFS]
... にも「[CODE[form_data]]」欄として含まれています。
]HISTORY]

** [CODE(HTTP)@en[GET]] の場合

[84] [VAR[メソッド]]が [CODE(HTTP)@en[GET]] の場合には、次のようにします [SRC[>>38]]。
[FIG(steps)[
= [86] [VAR[scheme]] を、[VAR[URL]]の [F[scheme][URL scheme]] に設定します。
= [87] [VAR[scheme]] が [CODE(URI)@en[javascript][javascript:]] でなければ (>>88)、
== [89] [VAR[query]] を、[VAR[フォームデータ集合]]と[VAR[符号化]]について
[CODE(MIME)@en[application/x-www-form-urlencoded]] [[直列化器]]を適用した結果に設定します。
== [92] [VAR[scheme]] が [CODE(URI)@en[mailto][mailto:]] なら、
=== [93] [VAR[query]] の [CODE[+]] をすべて [CODE[%20]] に置換します。
== [90] [VAR[URL]] の[F[クエリー][URL query]]を、[VAR[query]] に設定します。
= [91] [[plan to navigate]] します。
[FIG(list members)[
[FIGCAPTION[
[[要求]]
]FIGCAPTION]
: [F[URL][要求URL]] : [VAR[URL]]
]FIG]
]FIG]

[88] >>87 は [[HTML Standard]] では [CODE(URI)@en[ftp:]] の場合も除外されることになっていますが、
[[Chrome]] は [CODE(URI)@en[ftp:]] でも [CODE(URI)@en[http:]] と同じような処理とするようです。
また [[HTML Standard]] はその他の [[URL scheme]] について明確に規定していませんが、
やはり [CODE(URI)@en[http:]] と同じような処理とするようです。
[TIME[2016-06-06T14:30:10.400Z]]

** [CODE(HTTP)@en[POST]] の場合

[85] [VAR[メソッド]]が [CODE(HTTP)@en[POST]] の場合には、
次のようにします [SRC[>>38]]。
[FIG(steps)[
= [101] [VAR[URL]]の [F[scheme][URL scheme]] が [[HTTP(S) scheme]] なら、
== [102] [VAR[提出子]]の [F[enctype]] により、
[FIG(switch)[
: [CODE(MIME)@en[text/plain]] : [[plan to navigate]] します。
[FIG(list members)[
[FIGCAPTION[
[[要求]]
]FIGCAPTION]
: [F[URL][要求URL]] : [VAR[URL]]
: [F[メソッド][要求メソッド]] : [CODE[POST]]
: [F[ヘッダーリスト]] :
[FIG(list members)[
: [CODE(HTTP)@en[Content-Type]] : [CODE(MIME)@en[text/plain]]
]FIG]
: [F[本体][要求本体]] : [VAR[フォームデータ集合]]と[VAR[符号化]]に関して
[CODE(MIME)@en[text/plain]] [[直列化器]]を適用した結果を[VAR[符号化]]で[[符号化]]したもの
]FIG]
: [CODE(MIME)@en[multipart/form-data]] : 
[VAR[フォームデータ集合]]と[VAR[符号化]]に関して
[CODE(MIME)@en[multipart/form-data]] [[符号化器]]を適用して得た[VAR[本体]]と[VAR[境界文字列]]を使って、
[[plan to navigate]] します。
[FIG(list members)[
[FIGCAPTION[
[[要求]]
]FIGCAPTION]
: [F[URL][要求URL]] : [VAR[URL]]
: [F[メソッド][要求メソッド]] : [CODE[POST]]
: [F[ヘッダーリスト]] :
[FIG(list members)[
: [CODE(HTTP)@en[Content-Type]] : [CODE(MIME)@en[multipart/form-data;]], [CODE[U+0020]],
[CODE[boundary=]], [VAR[境界文字列]]を連結したもの
]FIG]
: [F[本体][要求本体]] : [VAR[本体]]
]FIG]
: [CODE(MIME)@en[application/x-www-form-urlencoded]] : [[plan to navigate]] します。
[FIG(list members)[
[FIGCAPTION[
[[要求]]
]FIGCAPTION]
: [F[URL][要求URL]] : [VAR[URL]]
: [F[メソッド][要求メソッド]] : [CODE[POST]]
: [F[ヘッダーリスト]] :
[FIG(list members)[
: [CODE(HTTP)@en[Content-Type]] : [CODE(MIME)@en[application/x-www-form-urlencoded]]
]FIG]
: [F[本体][要求本体]] : [VAR[フォームデータ集合]]と[VAR[符号化]]に関して
[CODE(MIME)@en[application/x-www-form-urlencoded]] [[直列化器]]を適用した結果を
[[UTF-8符号化]]したもの
]FIG]
]FIG]
= [103] それ以外なら、
== [104] [VAR[URL]]の [F[scheme][URL scheme]] が [CODE(URI)@en[mailto][mailto:]]
なら、
=== [67] [VAR[提出子]]の [F[enctype]] が [CODE(MIME)@en[text/plain]] なら、
==== [81] [VAR[本体]]を、[VAR[フォームデータ集合]]と[VAR[符号化]]に関して
[CODE(MIME)@en[text/plain]] [[直列化器]]を適用した結果に設定します。
=== [82] それ以外なら、
==== [83] [VAR[本体]]を、[VAR[フォームデータ集合]]と[VAR[符号化]]に関して
[CODE(MIME)@en[application/x-www-form-urlencoded]] [[直列化器]]を適用した結果に設定します。
=== [94] [VAR[query]] を、[VAR[URL]] の[F[クエリー][URL query]]に設定します。
=== [96] [VAR[query]] が [[null]] なら、
==== [97] [VAR[query]] を、[[空文字列]]に設定します。
=== [95] [VAR[query]] が空でなければ、
==== [98] [VAR[query]] の末尾に、 [CODE[&]] を追加します。
=== [99] [VAR[query]] の末尾に、 [CODE[body=]] を追加します。
=== [106] [VAR[query]] の末尾に、[VAR[本体]]を
[CODE(MIME)@en[application/x-www-form-urlencoded]] 相当の
[[UTF-8パーセント符号化]] (ただし [CODE[+]] は不使用。) した結果を追加します。
=== [100] [VAR[URL]] の[F[クエリー][URL query]]を、 [VAR[query]] に設定します。
== [105] [[plan to navigate]] します。
[FIG(list members)[
[FIGCAPTION[
[[要求]]
]FIGCAPTION]
: [F[URL][要求URL]] : [VAR[URL]]
]FIG]
]FIG]

;; [107] [CODE(URI)@en[mailto:]] の [CODE(URI)@en[body][body=]] の値について、
[[HTML Standard]] は、 [CODE(MIME)@en[application/x-www-form-urlencoded]]
の時そのまま、 [CODE(MIME)@en[text/plain]] の時[[既定符号化集合]]を使った
[[UTF-8パーセント符号化]]としているのですが、
[[Chrome]] はそれだけでなく本来必要な文字すべてを[[パーセント符号化]]
(つまり前者の場合二重に[[パーセント符号化]]) するようです。
([CODE(MIME)@en[application/x-www-form-urlencoded]] と[[既定符号化集合]]の比較:
[CITE@en[Compare character sets "-$url:form:unencoded-byte-char" and "$url:default-encode-set"]] ([TIME[2016-06-07 00:51:21 +09:00]]) <https://chars.suikawiki.org/set/compare?expr1=-%24url%3Aform%3Aunencoded-byte-char&expr2=%24url%3Adefault-encode-set>)
[TIME[2016-06-06T15:05:29.0Z]]

;; [108] [[HTML Standard]] はその他の [[URL scheme]] の場合を明確にしていませんが、
[[Chrome]] は[VAR[URL]]そのままの [[navigate]] とするようです。
[TIME[2016-06-06T15:05:58.00Z]]

* 提出の navigate

[109] [CODE(HTMLe)@en[form]] [[要素]]は、
[DFN[[F[planned navigation]]]] を持ちます。
値は、[[タスク]]または [[null]] です。初期値は [[null]] です。 [SRC[>>38]]

[110] [VAR[フォーム]]と[VAR[要求]]に関して [DFN[plan to navigate]]
とは、次のようにしなければ[MUST[なりません]] [SRC[>>38]]。

[FIG(steps)[
= [111] [VAR[フォーム]]の [F[planned navigation]] が[[タスク]]なら、
== [112] [VAR[フォーム]]の [F[planned navigation]] が含まれる[[タスクキュー]]から当該[[タスク]]を削除します。
= [114] [VAR[タスク]]を、[[タスク]]に設定します。
[FIG(list members)[
[FIGCAPTION[
[[タスク]]
]FIGCAPTION]
: [F[処理]] :
[FIG(steps)[
= [116] [VAR[フォーム]]の [F[planned navigation]] を、 [[null]] に設定します。
= [117] [[navigate]] します。
[FIG(list members)[
: [VAR[[[navigate]] する[[閲覧文脈]]]] : [VAR[対象]]
: [VAR[要求]] : [VAR[要求]]
: [VAR[[[置換有効]]]] : [VAR[置換有効]]
: [VAR[新しい[[最上位閲覧文脈]]]] : [VAR[置換有効]]
: [VAR[ナビゲーション型]] : [DFN[[CODE[form-submission]]]]
: [VAR[[[利用者]]が[[閲覧文脈]]を明示した]] : [VAR[[[利用者]]が[[閲覧文脈]]を明示した]]
]FIG]
]FIG]
: [F[タスク源]] : [[DOM操作タスク源]]
]FIG]
= [113] [VAR[フォーム]]の [F[planned navigation]] を、[VAR[タスク]]に設定します。
= [115] [VAR[タスク]]を、[[タスクキューに追加]]します。
]FIG]

* ダイアログの提出

@@ [80] 

* 安全性

[14]
[[フォーム]]の[[提出]]機能が濫用され、
[[利用者]]に第3者を攻撃させるために使われることがあります。
例えば、 [[SMTP]] [[鯖]]を[[提出]]先とし、
[[提出]]により[[利用者]]が気づかない間に [[spam]] 
が[[送信]]されてしまうことがあるかもしれません。

[[SMTP]] や [[telnet]] などよく知られた[[フォーム]][[提出]]には使われない[[プロトコル]]の[[ポート]]番号が[[提出]]先に指定されている時には、
[[提出]]を制限することが勧められています。
[SRC@en[WF2 1.12]]

[15]

> Certain actions, including submitting a form to a third-party site and making HTTP GET requests to remote sites (both of which would be blind attacks, assuming the UA implements a cross-domain scripting security mechanism) have been historically allowed, and many sites depend on these features for quite legitimate uses. User agents should allow them.
> Servers therefore must also consider security. Servers should never perform non-idempotent actions in response to GET requests, as discussed by the HTTP specification. Servers should also check the Referer header to ensure that only requests from trusted hosts are honoured.
> Servers should also consider the client to be untrusted, since in most scenarios requests can be made to hosts by hostile parties directly, bypassing any security logic included in the page nominally intended to perform the submission. Thus servers should perform validation on all submitted data, whether such validation is expected to be performed on the client or not. 

[SRC@en[WF2 1.12]]


* 歴史

** HTML4

[2] 
- [[HTML 4]] ([[Web Forms 1.0]])
-- [CITE[17.13 Form submission]]
<IW:HTML4:"interact/forms.html#submit-format">

[4] フォームの提出は、次の手順を経ます。 [SRC[HTML 4 17.13.3]]

:1. 成功制御子の識別:[[フォーム]]内の制御子から、[[成功]]しているものを選びます。
:2. フォーム・データ集合の構築:成功制御子から、[DFN[[[フォーム・データ集合]]]]
([[制御子名]]と[[現在値]]の組の集合) を構築します。
:3. フォーム・データ集合の符号化:フォーム・データ集合を指定された[[媒体型]]
([CODE(HTMLa)[[[enctype]]]]) により符号化します。
:4. 符号化フォーム・データ集合の提出:符号化したデータ集合を指定された[[フォーム処理エージェント]]
([CODE(HTMLa)[[[action]]]]) に指定された方法 ([CODE(HTMLa)[[[method]]]]) 
で送信します。
:(5. 結果のレンダリング):UA は、提出の際の HTTP [CODE(HTTP)[[[GET]]]]・[CODE(HTTP)[[[POST]]]]
に対する応答をレンダリングするべきです。

[5] >>4 で、提出されるのがフォーム・データ集合 (名前と現在値の組の集合)
だけのように書かれていますが、
ファイル選択制御子の場合はそれに含まれないはずのファイルの内容も提出されます。
画像提出ボタン ([[[CODE(HTMLe)[input]]//[CODE(HTML)[image]]]])
の座標との関係も不明確で、概念の整理が不十分という印象を受けます。

[6] なお、 >>4 の流れは、4つの段階を完全に別のものとして扱えるわけではなく、
制御子の種類, 媒体型, 処理エージェントのプロトコルなどの依存関係があります。
仕様や実装によって実際に使用できる組合せは限られてきます。
>>7 をご覧ください。

** HTML5

- [66] [[Web Forms 2.0]]
-- [CSECTION@en[1.12. Security]]
<IW:WF2:"#security">

[65] [CITE@en-GB-x-Hixie[Web Forms 2.0]] ([TIME[2009-01-05 20:07:15 +09:00]] 版) <http://www.whatwg.org/specs/web-forms/current-work/#for-http>

** 実装

[8] [WEAK[2003-10-12 12:52:32 +00:00]] ''[[名無しさん]]'': 手元の 
[Q[Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.4) Gecko/20030624]] 
で試してみたら、 [CODE(HTMLa)[[[enctype]]]] は
[CODE(MIME)[[[application/x-www-form-urlencoded]]]] と 
[CODE(MIME)[[[text/plain]]]] と [CODE(MIME)[[[multipart/form-data]]]] 
に対応していましたが、[[引数]]をつけたら全滅でした。

[2] >>1 [[WinIE 6]] と Win[[Opera]] 7.20 でも同様でした。但し Opera は 
[CODE(MIME)[text/plain]] に対応していない模様。

[[#comment]]


** メモ

[3] フォームの[Q[提出]] ([Q[submit]]) は、意味を解して[Q[送信]]とも呼ばれます。
しかしながら、提出と送信ではニュアンスが異なりますから、
専門用語としては使い分けるべきでしょう。

[10]
[[WAP 2.0]] は [[XHTML m12n]] + α ですが、
追加の属性の関係でフォーム処理の方法を修正しています。

[12]
[[ヘブライ語]]が含まれるかもしれない時に [CODE(HTML)[[[get]]]]
を [CODE(HTMLa)[[[method]]]] に使うのは非推奨です。

- [[SI 4281]]:1998
-- [CSECTION[8.1 Encoding the reply]]
<http://www.qsm.co.il/Hebrew/si4281e.htm>

[13]
[[提出]]先[[URI]] ([CODE(HTMLa)@en[[[action]]]] [[URI]])
に既に[CODE(URI)@en[?]]が含まれているにもかかわらず[[提出]]方法が[[HTTP]] [CODE(HTML)@en[[[get]]]]の場合どうするかについて、
- [[HTML 4]]には規定がありません。
- [[Web Forms 2.0]]と実際の[[Webブラウザ]]は[CODE(URI)@en[?]]以後を切り落とした上で[[フォーム・データ集合]]から生成したものを付け足します。
- [[XForms 1.0]]はそのままの[[URI]]に、[CODE(URI)@en[&]]と[[フォーム・データ集合]]から生成したものを付け足します。

[[Web Forms 2.0]]の方法は、[[相対URI参照]]を使ってもどんどん[CODE(ABNF)@en[[[query]]]]が長くなっていく虞が無いという利点があります。

[CITE@en[Re: Compatibility between HTML, XForms, and WSDL from Ian Hickson on 2005-03-21 (www-forms-editor@w3.org from March 2005)]] 
<http://lists.w3.org/Archives/Public/www-forms-editor/2005Mar/0008.html>

[16]
[CITE[公開メモ日記 - IEのフォームでsubmitボタンの値が送信されるかどうか]] <http://knoa.jp/memo/?id=2006-07-18+17:26>
([[名無しさん]] [WEAK[2006-07-18 12:02:21 +00:00]])

[17]
[CITE[Form Submission by Pressing the Enter Key]] <http://suika.suikawiki.org/~wakaba/-temp/test/html/form/submission/submit-by-enter-1.html>

[CITE[Form Submission by Pressing the Enter Key]] <http://suika.suikawiki.org/~wakaba/-temp/test/html/form/submission/submit-by-enter-2.html>

[18]
[CITE[Web Forms 2.0]] <http://www.whatwg.org/specs/web-forms/current-work/#enter-submit>

[19]
>>16-18

[[WinIE 6]] では、[[テキスト入力制御子]]で [KEY@en[[[Enter]]]]
を押すと、
- [[テキスト入力制御子]]が[[フォーム]]内に1つなら、
[[提出]][[ボタン]]を押して''いない''として[[提出]]
- [[テキスト入力制御子]]が[[フォーム]]内に2つ以上なら、
[[提出]][[ボタン]]を押し''た''として[[提出]]

[[Firefox 1.5]] と [[Opera 8]] では、どちらも押し''た''として[[提出]]
([[名無しさん]] [WEAK[2006-07-18 12:05:24 +00:00]])

[22]
[CITE@en-GB[FORM submission and i18n]] ([CODE[2006-05-19 20:53:32 +09:00]] 版) 
<http://ppewww.physics.gla.ac.uk/~flavell/charset/form-i18n.html>

** メモ

[171] [CITE@en['''['''acgiow''']''' (0) Put method=DELETE and method=PUT to rest.]], [[Hixie]], [TIME[2010-09-30 16:58:35 +09:00]], [TIME[2023-11-30T04:24:10.000Z]] <https://github.com/whatwg/html/commit/6b902648c8a55e3a0bfc2aa0968e9b5fc04fd46e>

[298] [CITE@ja[フォームの入力エラーを吹き出しで教えてくれる JavaScript]] ([[Kyosuke Takayama]] 著, [TIME[2008-12-31 22:40:11 +09:00]] 版) <http://espion.just-size.jp/archives/07/035231221.html>

[299] [CITE@en[Web Applications 1.0 r5566       Put method=DELETE and method=PUT to rest.Fixing http://www.w3.org/Bugs/Public/show_bug.cgi?id=10671]]
( ([TIME[2010-09-30 16:58:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=5565&to=5566>

[300] [CITE[''''''[''''''whatwg'''''']'''''' HTMLForms: Implicit Submission with {display:none} button]]
( ([TIME[2011-09-24 09:56:23 +09:00]] 版))
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-September/033285.html>

[301] [CITE[''''''[''''''whatwg'''''']'''''' HTMLForms: Implicit Submission with {display:none} button]]
([TIME[2012-04-04 07:52:15 +09:00]] 版)
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2012-February/034924.html>

[302] [CITE@en[Web Applications 1.0 r7992     Make <form> submission more like reality.]]
([TIME[2013-06-20 06:37:00 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=7991&to=7992>

[303] [CITE@en[W3C HTML JSON form submission]]
([TIME[2014-12-09 19:38:36 +09:00]] 版)
<http://darobin.github.io/formic/specs/json/>

[304] [CITE@en[W3C HTML JSON form submission]]
([TIME[2014-05-27 23:38:45 +09:00]] 版)
<http://www.w3.org/TR/html-json-forms/>

[305] [CITE@en[W3C HTML JSON form submission]]
( ([TIME[2014-05-27 23:38:45 +09:00]] 版))
<http://www.w3.org/TR/2014/WD-html-json-forms-20140529/>

[306] [CITE@en[darobin/formic]]
( ([TIME[2014-12-25 14:28:07 +09:00]] 版))
<https://github.com/darobin/formic>

[28] [CITE@en[Integrate Fetch into HTML · whatwg/html@7c5555a]]
([TIME[2015-09-18 19:15:54 +09:00]] 版)
<https://github.com/whatwg/html/commit/7c5555a16f2920c02244c10756bb2f1a11e87a22>

[FIG(quote)[
[FIGCAPTION[
[29] [CITE@en[W3C HTML JSON form submission]]
([TIME[2015-09-29 04:06:11 +09:00]] 版)
<http://www.w3.org/TR/2015/NOTE-html-json-forms-20150929/>
]FIGCAPTION]

> This specification is no longer in active maintenance and the HTML Working Group does not intend to maintain it further.

]FIG]


[30] [CITE@en[Remove allow non-ASCII-compatible encodings flag · whatwg/html@c485b70]]
([TIME[2016-02-10 21:55:07 +09:00]] 版)
<https://github.com/whatwg/html/commit/c485b70bfe41ed1302c451bc62b58df80cffd325>

[31] [CITE@en[Let the URL Standard deal with application/x-www-form-urlencoded · whatwg/html@0fef169]]
([TIME[2016-02-11 11:43:29 +09:00]] 版)
<https://github.com/whatwg/html/commit/0fef169e6fca7433e3aac2a3640b4665b791ff8e>

[32] [CITE@en[Update integration with Encoding Standard · whatwg/html@6a31c26]]
([TIME[2016-02-14 18:48:50 +09:00]] 版)
<https://github.com/whatwg/html/commit/6a31c26cf12e39dab1a488e75dd56c03d6786d39>

[33] [CITE@en[Remove <isindex> and <input name=isindex> · whatwg/html@5c44abc]]
([TIME[2016-04-25 17:28:08 +09:00]] 版)
<https://github.com/whatwg/html/commit/5c44abc734eb483f9a7ec79da5844d2fe63d9c3b>

[34] [CITE@en[Fix form submission for the data URL scheme]]
( ([[annevk]]著, [TIME[2016-05-27 17:47:54 +09:00]]))
<https://github.com/whatwg/html/commit/e2d80d9285976c6c38bda188c59e97456006d0a3>

[35] [CITE@en[Clean up language around form submission and URLs]]
( ([[annevk]]著, [TIME[2016-05-27 17:54:39 +09:00]]))
<https://github.com/whatwg/html/commit/69ea9df17bf1d7d70a2014c6d2aaf16670683feb>

[36] [CITE@en[Fix form submission's encoding algorithms]]
( ([[annevk]]著, [TIME[2016-05-30 23:15:22 +09:00]]))
<https://github.com/whatwg/html/commit/ec42efb1d7c3a2e34db21b8076a8a3f4bd6dfb81>

[37] [CITE@en[Only allow form submission for forms in a shadow-including document]]
( ([[annevk]]著, [TIME[2016-06-04 01:32:39 +09:00]]))
<https://github.com/whatwg/html/commit/4bdac7a69ebd8a65ed7a8f198d24515c95a07301>

[118] [CITE@en[Upstream navigation hooks from CSP]]
([[mikewest]]著, [TIME[2016-08-18 17:01:55 +09:00]])
<https://github.com/whatwg/html/commit/2083b0053a059f692a0a95547ba9b6bd0c511094>

[74] [CITE@en[Revamp the rules for choosing a browsing context]]
([[annevk]]著, [TIME[2017-05-09 16:31:28 +09:00]])
<https://github.com/whatwg/html/commit/5578a0495f826a56597288b7ba1f71163f17cdd6>

[75] [CITE@en[Fix form connectedness check, but also warn about it]]
([[domenic]]著, [TIME[2017-06-01 05:43:22 +09:00]])
<https://github.com/whatwg/html/commit/df520f824a0f5b705059855a602d47590629b2aa>

[77] [CITE@en[Editorial: centralize target attribute processing]]
([[annevk]]著, [TIME[2017-09-06 16:17:43 +09:00]])
<https://github.com/whatwg/html/commit/0b31844d6dcc7ef49b3815f4f709d4c0284378f1>

[78] [CITE@en[Deduplicate finding the correct target attribute · Issue #2619 · whatwg/html]]
([TIME[2017-09-10 21:29:13 +09:00]])
<https://github.com/whatwg/html/issues/2619>

[119] [CITE@en[Editorial: centralize target attribute processing by annevk · Pull Request #3007 · whatwg/html]]
([TIME[2017-09-10 21:29:44 +09:00]])
<https://github.com/whatwg/html/pull/3007>

[120] [CITE@en[Centralize checks for <a>, <area>, <form>, and <link>]]
([[annevk]]著, [TIME[2017-09-22 21:04:25 +09:00]])
<https://github.com/whatwg/html/commit/f3c354add894e1ac01e3732ff976aa9874a77b3f>

[47] [CITE@en[<a>, <area>, <link>, and <form> behavior · Issue #2615 · whatwg/html]]
([TIME[2017-09-29 16:36:07 +09:00]])
<https://github.com/whatwg/html/issues/2615>

[122] [CITE@en[Form submission: Should check connected twice · Issue #2708 · whatwg/html]]
([TIME[2017-09-29 16:40:52 +09:00]])
<https://github.com/whatwg/html/issues/2708>

[123] [CITE@en[Centralize checks for <a>, <area>, <form>, and <link> by annevk · Pull Request #2613 · whatwg/html]]
([TIME[2017-09-29 16:41:17 +09:00]])
<https://github.com/whatwg/html/pull/2613>

[124] [CITE@en[10671 – consider adding support for PUT and DELETE as form methods]]
([TIME[2018-03-25 11:41:13 +09:00]])
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=10671>

[125] [CITE@en[ISSUE-195: Enhance http request generation from forms - HTML Weekly Tracker]]
([TIME[2018-03-25 11:48:14 +09:00]])
<https://www.w3.org/html/wg/tracker/issues/195>

[126] [CITE@en[ISSUE-196: Define user agent http response handling behaviour - HTML Weekly Tracker]]
([TIME[2018-03-25 11:49:40 +09:00]])
<https://www.w3.org/html/wg/tracker/issues/196>

[127] [CITE@en[Remove _charset_ handling. by tkent-google · Pull Request #382 · whatwg/url]]
([TIME[2018-05-02 12:45:45 +09:00]])
<https://github.com/whatwg/url/pull/382>

[128] [CITE@en[Move _charset_ handling to construct the form data set]]
([[tkent-google]]著, [TIME[2018-04-27 17:25:35 +09:00]])
<https://github.com/whatwg/html/commit/8c212e549607a41b6d40d953b47d9f3e749533f3>

[129] [CITE@en[<input type=hidden name=_charset_> doesn't match to browser implementations · Issue #3560 · whatwg/html]]
([TIME[2018-05-02 12:49:50 +09:00]])
<https://github.com/whatwg/html/issues/3560>

[130] [CITE@en[Move _charset_ handling from "multipart/form-data encoding algorithm"… by tkent-google · Pull Request #3645 · whatwg/html]]
([TIME[2018-05-02 12:50:44 +09:00]])
<https://github.com/whatwg/html/pull/3645>

[131] [CITE@en[FormData: remove 'type' mapping for 'entry']]
([[tkent-google]]著, [TIME[2018-05-08 18:05:48 +09:00]])
<https://github.com/whatwg/xhr/commit/0b0dce11579fc504c7f1799b9714e99bec9e9df1>

[132] [CITE@en[Remove 'type' mapping for 'entry'. by tkent-google · Pull Request #206 · whatwg/xhr]]
([TIME[2018-05-10 12:16:03 +09:00]])
<https://github.com/whatwg/xhr/pull/206>

[133] [CITE@en[Remove 'type' from form data set tuples]]
([[tkent-google]]著, [TIME[2018-05-08 18:07:57 +09:00]])
<https://github.com/whatwg/html/commit/a1e8b1a9725dc716326f564b91a29aca19daf2f2>

[134] [CITE@en[Remove 'type' from form data set tuples. by tkent-google · Pull Request #3658 · whatwg/html]]
([TIME[2018-05-10 12:17:43 +09:00]])
<https://github.com/whatwg/html/pull/3658>

[135] [CITE@en[Remove "type" from "form data set" entry · Issue #3648 · whatwg/html]]
([TIME[2018-05-10 12:18:09 +09:00]])
<https://github.com/whatwg/html/issues/3648>

[136] [CITE@en[Remove 'type' from from data entries. by tkent-google · Pull Request #384 · whatwg/url]]
([TIME[2018-05-10 12:19:16 +09:00]])
<https://github.com/whatwg/url/pull/384>

[137] [CITE@en[Remove form and submitter words and leave type declarations by amoseui · Pull Request #3688 · whatwg/html]]
([TIME[2018-05-18 15:21:13 +09:00]])
<https://github.com/whatwg/html/pull/3688>

[138] [CITE@en[Editorial: remove form and submitter type declarations]]
([[amoseui]]著, [TIME[2018-05-16 15:37:47 +09:00]])
<https://github.com/whatwg/html/commit/a3dca41f0bb379f4132689dd8fa435be28223a7c>

[139] [CITE@en[Editorial: replace "form data set" with "entry list" (from FormData)]]
([[tkent-google]]著, [TIME[2018-05-25 20:03:10 +09:00]])
<https://github.com/whatwg/html/commit/f95aba71309d831e75ed12fbc20c7d086e8244e3>

[140] [CITE@en[Use "entry" and "entry list" defined in XHR · Issue #3676 · whatwg/html]]
([TIME[2018-06-01 00:35:56 +09:00]])
<https://github.com/whatwg/html/issues/3676>

[141] [CITE@en[Use "entry" and "entry list" defined in XHR by tkent-google · Pull Request #3687 · whatwg/html]]
([TIME[2018-06-01 00:36:13 +09:00]])
<https://github.com/whatwg/html/pull/3687>

[142] [CITE@en[Editorial: replace "form data set" with "entry list" (from FormData)]]
([[tkent-google]]著, [TIME[2018-05-25 20:03:10 +09:00]])
<https://github.com/whatwg/html/commit/f95aba71309d831e75ed12fbc20c7d086e8244e3>

[143] [CITE@en[Change query state slightly to better deal with non-UTF-8 encodings]]
([[annevk]]著, [TIME[2018-05-09 17:55:15 +09:00]])
<https://github.com/whatwg/url/commit/f0e4390bf882446445e944215524ff3877aac95a>

[144] [CITE@en["html" error mode somewhat incompatible with URLs · Issue #139 · whatwg/encoding]]
([TIME[2019-02-25 17:23:31 +09:00]])
<https://github.com/whatwg/encoding/issues/139>

[145] [CITE@en[Event-based form participation]]
([[tkent-google]]著, [TIME[2019-01-08 23:18:23 +09:00]])
<https://github.com/whatwg/html/commit/1375c0ca5dd95ecb2ae5ad1d8d7bcc9bc75981c0>

[150] [CITE@en[Need callback for form submit data · Issue #187 · w3c/webcomponents]]
([TIME[2019-06-20 11:14:34 +09:00]])
<https://github.com/w3c/webcomponents/issues/187>

[151] [CITE@en[Event-based form participation by tkent-google · Pull Request #4239 · whatwg/html]]
([TIME[2019-06-20 11:29:23 +09:00]])
<https://github.com/whatwg/html/pull/4239>

[154] [CITE@en[Introduce SubmitEvent for the form 'submit' event]]
([[tkent-google]]著, [TIME[2019-11-01 03:55:55 +09:00]])
<https://github.com/whatwg/html/commit/f476180797e6124074b3cfeaf1973ea39eb6c499>

[70] [CITE@en[Would be nice if submit events exposed the "submitter" element · Issue #3195 · whatwg/html]]
([TIME[2020-05-14 15:09:37 +09:00]])
<https://github.com/whatwg/html/issues/3195>

[71] [CITE@en[Forms: Introduce SubmitEvent for 'submit' event by tkent-google · Pull Request #4984 · whatwg/html]]
([TIME[2020-05-14 15:10:41 +09:00]])
<https://github.com/whatwg/html/pull/4984>

[165] [CITE@en[Add <form>'s "firing submission events" flag]]
([[tkent-google]], [TIME[2019-05-16 03:27:00 +09:00]], [TIME[2021-07-02T11:40:38.000Z]])
<https://github.com/whatwg/html/commit/cb55dca6a71e79a5ce3e078dc8d7b525c890bfe8>

[166] [CITE@en[Add <form>'s "firing submission events" flag]]
([[tkent-google]], [TIME[2019-05-16 03:27:00 +09:00]], [TIME[2021-07-02T11:45:55.000Z]])
<https://github.com/whatwg/html/commit/cb55dca6a71e79a5ce3e078dc8d7b525c890bfe8>

[167] [CITE@en[Reentrancy protection for 'submit' event · Issue #4620 · whatwg/html]]
([TIME[2021-07-02T11:46:15.000Z]])
<https://github.com/whatwg/html/issues/4620>

[168] [CITE@en[Add form.requestSubmit() by domenic · Pull Request #4597 · whatwg/html]]
([TIME[2021-07-02T11:47:08.000Z]])
<https://github.com/whatwg/html/pull/4597>

[169] [CITE@en[Add <form>'s "firing submission events" flag by tkent-google · Pull Request #4621 · whatwg/html]]
([TIME[2021-07-02T11:47:39.000Z]])
<https://github.com/whatwg/html/pull/4621>

[170] [CITE@en[The WHATWG Blog — Newline normalizations in form submission]], [TIME[2021-10-09T05:52:01.000Z]] <https://blog.whatwg.org/newline-normalizations-in-form-submission>





- [172] [CITE@ja[なぜ html の form は PUT / DELETE をサポートしないのか? - Block Rockin’ Codes]], [TIME[2023-11-30T04:13:11.000Z]] <https://jxck.hatenablog.com/entry/why-form-dosent-support-put-delete>
- [173] [CITE@ja[なぜ HTML の form は PUT / DELETE をサポートしないのか? | blog.jxck.io]], [[Jxck]], [TIME[2023-11-29T15:50:33.000Z]], [TIME[2023-11-30T04:13:21.738Z]] <https://blog.jxck.io/entries/2023-11-27/hixie.html>

[174] 
>>173 は [[Ian Hickson]] の最近?のコメントを取ってきてるらしいのが貴重だけど、それをそのまま書いてるわけではないのが残念。

[175] 
でもそのかいあって >>173 は >>172 より解像度は確かに上がっている気はする。
にも関わらず >>172 も >>173 も [CITE[[[Web Forms 2.0]]]] 
に一言も言及していないのはどういうことなんだろう。

[176] 
>>173 を読むと [[Hixie]] は初めから全てを見通していて、
幻想を抱く者たちを冷酷にも切り捨てていたように思えるが、
実際にはそうではない。 [[Hixie]] もまた同じ幻想に取り憑かれ、
敗れ去った者の1人だった。

[177] 
後に [[HTML5]] と呼ばれることになる [CITE[WF2]] は [CODE[form]] で
[CODE[PUT]] / [CODE[DELETE]] が使えたし、なんならそれが [[HTML4]]
と違う目玉機能の1つと受け止められていた。言うまでもなく [CITE[WF2]] 
の著者は [[Hixie]]。そして当時 [[Hixie]] が勤務していた [[Opera]]
がこれを実装した。

[178] 
>>173 は [[HTML]] [[フォーム]]で [CODE[PUT]] しても [[payload]] 
が[[フォームデータ]]では意味がない、使いようがないと書いているが、 
[CITE[WF2]] はそれに1つの回答を与えていた。 [CODE[PUT]]
と [CODE[<input type=file>]] の組み合わせで[[ファイルアップロード]]用[[フォーム]]を作れる、
というのが [CITE[WF2]] の構想だった。

[179] 
このすべてが [[Hixie]] の独創かというとそうでもなく、
[CODE[form]] で [CODE[PUT]] や [CODE[DELETE]] を使いたいというのは[[90年代]]の
[[HTML]] 標準化の現場でたびたび出てきていた要望だったし、
[[WF2]] の機能の大部分は [[XForms]] の新機能を [[HTML]]
に[[バックポート]]したものだった。
[[WF2]] 完成くらいまでの初期の [[Hixie]] の仕事は [[HTTP]] の力を十分活かせていない
[[HTML]] を拡充したいという意思があちこちに見え隠れしている。
当時の [[Hixie]] は後のいわゆる「[[REST]] 信者」とそう遠くない位置にいたとみていい。


[180] 
ところが [[WF2]] の方向性は (当時 [[Webブラウザー]]開発を事実上凍結していた [[MS]] 以外の)
[[Webブラウザー事業者]]各社に支持されたものの、 [[WF2]] を完全実装したのは 
[[Opera]] だけだった。
そのため [[WF2]] が [CITE[HTML5]] に統合されるとき、取捨選択が行われた。
それで [[payload]] を[[フォームデータ]]でなく[[ファイル]]にする機能など、
実装が見込めないものは [CITE[HTML5]] には移されなかった。
それでも当初 [CODE[PUT]] や [CODE[DELETE]] が [CITE[HTML5]]
に追加されたのは、きっと [[Hixie]] もまだ幻想を断ち切れてなかったんだろう。

[181] 
しかし残った機能だと [CODE[PUT]] も [CODE[DELETE]] も使いようがないのは
>>173 が説明する通り。使い道がないなら[[Webブラウザー]]に実装される見込みもない。
だから [[Hixie]] もあっさり削除の提案を受け入れた。
>>173 
が紹介するような [[REST]] 信者の騒ぎはすべてそれより後の出来事で、
しかも状況を覆す新しい情報をもたらすものでもなかったから、
仕様書は再度変更されることはなかったし、
[[Webブラウザー事業者]]も反応しなかった。

;; [182] 
需要があってもっともだと判断されれば[[Webブラウザー事業者]]が実装し、
後から [[Hixie]] がしぶしぶそれに追随する、というルートもあった。
このケースではそのルートも辿らなかったということ。
[[Opera]] ([[Presto]]) が既に実装しているので、
他に1つでもそれに追随する[[Webブラウザー事業者]]があればきっと
[[Hixie]]
もそれに従う、という低いハードルだったにも関わらず。

[183] 
なお[[フォームの提出]]の仕組みはもっと活用できるはず、というアイデア自体は [[Hixie]]
も大事にしていて、
平成22年に
[CODE[PUT]] や [CODE[DELETE]] を [CODE[method][<form method>]] から削除した翌年の平成23年には
[CODE[method][<form method>]] に [CODE[dialog]] を追加して
[CODE[dialog]] [[要素]]と結びつける案を作っている。

;;
[184] 
[CITE[WF2]] 時代には [CODE[action][<form action>]] に [CODE[javascript:]] [[URL]]
を指定できることになっていて、それは実際に [[Netscape Navigator]]
時代からあった機能を拡充したものだったが、その後セキュリティー的にどうかということで、
今では全廃されている。 [CODE[<form method=dialog>]] はある種そのうちの特定の利用形態だけを取り出した後継機能と見ることもできる。
どちらも[[フォームの提出]]機能の宛先を [[HTTP]] でなく [[JavaScript]] コードにできるというのが大きな特徴。
従来も [CODE[onsubmit]] などで[[フォームデータ]]にアクセスはできたが、
[[フォームの提出]]それ自体が [[JavaScript]] に行き着くものではなかった。
ここに [[Ajax]] 時代を経ての [[HTTP]] との decoupling という思想を見ることもあるいは可能かもしれない。



[185] 
[[Firefox]] は[[フォームの提出]]にまだ何かおかしな (現行仕様になる前に由来するのであろう、現在からみると不適切な) 挙動が残っているみたいです。
[CODE[form]] [[要素]]の [CODE[submit]] [[イベントハンドラー]] (独自の処理を行い、[[フォームの提出]]は取り消す。) を呼び出したいと
[CODE[submit]] [[イベント]]を[[発火]]してみると、なぜか[[フォームの提出]]が行われます。
かわりに [CODE[<button type=submit>]] の [CODE[click]] を実行すれば普通の[[フォームの提出]] → [CODE[submit]] [[イベントハンドラー]]でそれを取り消し、となって意図通りの挙動になるのですが。
[TIME[2025-01-16T01:28:53.000Z]]



