Dialog Dismissal

Dialogs can be dismissed in the following ways:

  • Manually, by the user pressing the ESC key
  • Programmatically, by calling HTMLDialogElement#close with an optional return value.

You can listen for the default gesture (typically [ENTER]) by registering for the submit event on the form:

function onsubmit(e) {
    dialog.close("ok");
    e.preventDefault();
}
form.onsubmit = onsubmit;

You should also register a click handler for your "OK" and "Cancel" buttons:

const cancelButton = document.querySelector("#cancel");
cancelButton.addEventListener("click", () => dialog.close("reasonCanceled"));

const okButton = document.querySelector("#ok");
okButton.addEventListener("click", e => {
    onsubmit();
    e.preventDefault();
});

You can listen for the dialog's dismissal using the close event on the dialog:

dialog.addEventListener("close", () => {
    // dialog is closed at this point
});

Preventing Dialog Dismissal

You can, in some cases, prevent a dialog dismissal. If the form calls preventDefault on the submit event, the dialog will fail to dismiss.

It is not possible to cancel a dismissal triggered by the ESC gesture.

results matching ""

    No results matching ""