HTMLFormElement: submit 事件

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

當一個 <form> 被提交時,會觸發 submit 事件。

請注意,submit 事件是在 <form> 元素本身上觸發的,而不是在其內部的任何 <button><input type="submit"> 上觸發。然而,用於指示表單提交操作已被觸發的 SubmitEvent 包含一個 submitter 屬性,該屬性是用於觸發提交請求的按鈕。

當發生以下情況時,會觸發 submit 事件:

但是,當指令碼直接呼叫 form.submit() 方法時,不會向表單傳送該事件。

注意: 嘗試提交一個未透過 驗證 的表單會觸發一個 invalid 事件。在這種情況下,驗證會阻止表單提交,因此不會有 submit 事件。

語法

在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。

js
addEventListener("submit", (event) => { })

onsubmit = (event) => { }

事件型別

一個 SubmitEvent。繼承自 Event

Event SubmitEvent

事件屬性

除了下面列出的屬性外,此介面還繼承了其父介面 Event 的屬性。

submitter 只讀

一個 HTMLElement 物件,用於標識用於觸發表單提交的按鈕或其他元素。

示例

此示例使用 EventTarget.addEventListener() 來監聽表單提交,並在每次發生提交時記錄當前的 Event.timeStamp,然後阻止表單提交的預設行為。

HTML

html
<form id="form">
  <label>Test field: <input type="text" /></label>
  <br /><br />
  <button type="submit">Submit form</button>
</form>
<p id="log"></p>

JavaScript

js
const form = document.getElementById("form");
const log = document.getElementById("log");

function logSubmit(event) {
  log.textContent = `Form Submitted! Timestamp: ${event.timeStamp}`;
  event.preventDefault();
}

form.addEventListener("submit", logSubmit);

結果

規範

規範
HTML
# event-submit
HTML
# handler-onsubmit

瀏覽器相容性

另見