HTMLElement:取消事件
cancel
事件由 <input>
和 <dialog>
元素触发。当用户使用 Esc 键关闭当前打开的对话框以取消对话框时,会触发此事件。当用户通过 Esc 键或取消按钮取消文件选择器对话框,以及当用户重新选择之前已选择的相同文件时,文件输入 也会触发此事件。
此事件不会冒泡。
当使用 Esc 键关闭 <dialog>
时,会同时触发 cancel
和 close
事件。
语法
在诸如 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 的浏览器中加载。