FormDataEvent

Baseline 已广泛支持

此功能已成熟,并可在多种设备和浏览器版本上运行。自 2021 年 9 月起,所有浏览器均已支持此功能。

FormDataEvent 接口代表一个 formdata 事件——当表单数据的条目列表构建完成后,会在一个 HTMLFormElement 对象上触发此类事件。这会在表单提交时发生,但也可以由 FormData() 构造函数的调用触发。

这使得在 formdata 事件触发时可以快速获取一个 FormData 对象,而无需在你希望通过 fetch() 等方法提交表单数据时自行组装(请参阅 使用 FormData 对象)。

Event FormDataEvent

构造函数

FormDataEvent()

创建一个新的 FormDataEvent 对象实例。

实例属性

继承自其父接口 Event 的属性。

FormDataEvent.formData

包含事件触发时代表表单数据的 FormData 对象。

实例方法

继承自其父接口 Event 的方法。

示例

js
// grab reference to form

const formElem = document.querySelector("form");

// submit handler

formElem.addEventListener("submit", (e) => {
  // on form submission, prevent default
  e.preventDefault();

  console.log(form.querySelector('input[name="field1"]')); // FOO
  console.log(form.querySelector('input[name="field2"]')); // BAR

  // construct a FormData object, which fires the formdata event
  const formData = new FormData(formElem);
  // formdata gets modified by the formdata event
  console.log(formData.get("field1")); // foo
  console.log(formData.get("field2")); // bar
});

// formdata handler to retrieve data

formElem.addEventListener("formdata", (e) => {
  console.log("formdata fired");

  // modifies the form data
  const formData = e.formData;
  formData.set("field1", formData.get("field1").toLowerCase());
  formData.set("field2", formData.get("field2").toLowerCase());
});

规范

规范
HTML
# the-formdataevent-interface

浏览器兼容性

另见