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 的瀏覽器中載入。

另請參閱