HTMLFormElement: requestSubmit() 方法

Baseline 已廣泛支援

此功能已成熟,並可在多種裝置和瀏覽器版本上執行。自 2022 年 9 月起,所有瀏覽器都已支援此功能。

HTMLFormElement 方法 requestSubmit() 請求使用特定的提交按鈕提交表單。

語法

js
requestSubmit()
requestSubmit(submitter)

引數

submitter 可選

一個屬於表單的 提交按鈕

如果 submitter 指定了 form* 屬性,它們將 覆蓋 表單的提交行為(例如,formmethod="POST")。

如果 submitter 具有 name 屬性或是一個 <input type="image">,它的資料將 包含 在表單提交中(例如,btnName=btnValue)。

如果省略 submitter 引數,表單元素本身將被用作提交者。

返回值

無(undefined)。

異常

TypeError

如果指定的 submitter 不是一個 提交按鈕,則丟擲此異常。

NotFoundError DOMException

如果指定的 submitter 不是呼叫 requestSubmit() 的表單的成員,則丟擲此異常。提交者必須是表單元素的後代,或者必須具有指向該表單的 form 屬性。

用法說明

顯而易見的問題是:為什麼會存在這個方法,當我們從一開始就有了 submit() 方法時?

答案很簡單。submit() 會提交表單,但僅此而已。而 requestSubmit() 的行為則類似於點選了提交按鈕。表單內容將被驗證,只有在驗證成功後,表單才會被提交。一旦表單提交,submit 事件將被髮送回表單物件。

示例

在下面的示例中,如果 requestSubmit() 可用,則會嘗試使用它來提交表單。如果找到 ID 為 main-submit 的提交按鈕,則使用該按鈕提交表單。否則,表單將直接由表單本身提交,不帶 submitter 引數。

另一方面,如果 requestSubmit() 不可用,此程式碼將回退呼叫表單的 submit() 方法。

js
let myForm = document.querySelector("form");
let submitButton = myForm.querySelector("#main-submit");

if (myForm.requestSubmit) {
  if (submitButton) {
    myForm.requestSubmit(submitButton);
  } else {
    myForm.requestSubmit();
  }
} else {
  myForm.submit();
}

規範

規範
HTML
# dom-form-requestsubmit-dev

瀏覽器相容性