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

浏览器兼容性