HTMLElement:取消事件

cancel 事件由 <input><dialog> 元素触发。当用户使用 Esc 键关闭当前打开的对话框以取消对话框时,会触发此事件。当用户通过 Esc 键或取消按钮取消文件选择器对话框,以及当用户重新选择之前已选择的相同文件时,文件输入 也会触发此事件。

此事件不会冒泡。

当使用 Esc 键关闭 <dialog> 时,会同时触发 cancelclose 事件。

语法

在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。

js
addEventListener("cancel", (event) => {});

oncancel = (event) => {};

事件类型

一个通用的 Event

示例

取消对话框

HTML

html
<dialog class="example-dialog">
  <button class="close" type="reset">Close</button>
</dialog>

<button class="open-dialog">Open dialog</button>

<div class="result"></div>

JavaScript

js
const result = document.querySelector(".result");

const dialog = document.querySelector(".example-dialog");

dialog.addEventListener("cancel", (event) => {
  result.textContent = "dialog was canceled";
});

const openDialog = document.querySelector(".open-dialog");
openDialog.addEventListener("click", () => {
  if (typeof dialog.showModal === "function") {
    dialog.showModal();
    result.textContent = "";
  } else {
    result.textContent = "The dialog API is not supported by this browser";
  }
});

const closeButton = document.querySelector(".close");
closeButton.addEventListener("click", () => {
  dialog.close();
});

结果

取消输入元素

HTML

html
<label for="file">Select or file. Or don't.</label>
<input type="file" id="file" name="file" />

<div id="result"></div>

JavaScript

js
const elem = document.getElementById("file");

const result = document.getElementById("result");

elem.addEventListener("cancel", () => {
  result.textContent = "Canceled.";
});

elem.addEventListener("change", () => {
  if (elem.files.length == 1) {
    result.textContent = "File Selected.";
  }
});

结果

打开文件选择器,然后使用 Esc 键或取消按钮关闭选择对话框。这两种操作都会导致触发 cancel 事件。此外,尝试选择计算机上的本地文件;然后重新打开文件选择窗口并重新选择相同的文件。这也会导致触发 cancel 事件。

规范

未找到规范

未找到 api.HTMLElement.cancel_event 的规范数据。
检查此页面是否存在问题 或为缺少的 spec_url 贡献代码到 mdn/browser-compat-data。同时确保规范包含在 w3c/browser-specs.

浏览器兼容性

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

另请参阅