HTMLFormElement: requestSubmit() 方法

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

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。