HTMLFormElement: requestSubmit() Methode

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.

Die Methode requestSubmit() von HTMLFormElement fordert an, dass das Formular unter Verwendung eines bestimmten Absende-Buttons gesendet wird.

Syntax

js
requestSubmit()
requestSubmit(submitter)

Parameter

submitter Optional

Ein Absende-Button, der ein Mitglied des Formulars ist.

Wenn der submitter form* Attribute spezifiziert, werden diese das Absendeverhalten des Formulars überschreiben (z.B. formmethod="POST").

Wenn der submitter ein name Attribut besitzt oder ein <input type="image"> ist, werden seine Daten in die Formularübermittlung einbezogen (z.B. btnName=btnValue).

Wenn Sie den submitter Parameter weglassen, wird das Formularelement selbst als Submitter verwendet.

Rückgabewert

Keiner (undefined).

Ausnahmen

TypeError

Wird ausgelöst, wenn der angegebene submitter kein Absende-Button ist.

NotFoundError DOMException

Wird ausgelöst, wenn der angegebene submitter kein Mitglied des Formulars ist, auf dem requestSubmit() aufgerufen wurde. Der Submitter muss entweder ein Nachfahre des Formularelements sein oder ein form Attribut besitzen, das auf das Formular verweist.

Anwendungshinweise

Die offensichtliche Frage ist: Warum existiert diese Methode, wenn wir doch die submit() Methode seit Anbeginn der Zeit haben?

Die Antwort ist einfach. submit() sendet das Formular, aber das ist alles, was es tut. requestSubmit() hingegen verhält sich so, als ob ein Absende-Button geklickt wurde. Der Inhalt des Formulars wird validiert, und das Formular wird nur gesendet, wenn die Validierung erfolgreich ist. Sobald das Formular gesendet wurde, wird das submit Ereignis an das Formularobjekt zurückgesendet.

Beispiele

Im untenstehenden Beispiel wird das Formular versucht zu senden, indem requestSubmit() verwendet wird, wenn dies verfügbar ist. Wird ein Absende-Button mit der ID main-submit gefunden, wird dieser zum Senden des Formulars verwendet. Andernfalls wird das Formular ohne submitter Parameter gesendet, sodass es direkt vom Formular selbst gesendet wird.

Falls requestSubmit() nicht verfügbar ist, fällt dieser Code zurück auf das Aufrufen der submit() Methode des Formulars.

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();
}

Spezifikationen

Specification
HTML
# dom-form-requestsubmit-dev

Browser-Kompatibilität