对话框中的文件输入会导致对话框在文件输入被取消时关闭

File Input within a Dialog cause Dialog to close when File Input is cancelled

提问人:Cody Robinson 提问时间:6/9/2023 最后编辑:Cody Robinson 更新时间:6/9/2023 访问量:133

问:

这里的问题是我有一个对话框,在对话框中我有文件输入。

当我打开文件输入并点击取消时,它也会关闭对话框,这不是我要找的行为。

<dialog open>
  <p>My Dialog</p>
  <form method="dialog">
    <input type="file" />
  </form>
</dialog>

下面是一个 JSFiddle 来展示这个问题: https://jsfiddle.net/aumntbo0/)

我尝试停止点击和取消事件的出现,但这种行为仍然存在,这让我相信还有其他因素导致了这种行为。

JavaScript 表单 文件 输入 对话框

评论


答:

0赞 CalPal 6/9/2023 #1

文件输入和其他原生 html 元素的行为有时很难定制,并且通常是出于非常正当的原因(安全性、用户期望、可访问性)。这里有一种专门防止这种行为的方法,但在我看来,这是一个愚蠢的方法,因为它会阻止你关闭对话。您可以自定义代码,使其仅在某些情况下阻止对话框元素关闭。

<dialog id='file-dialog' open>
  <p>My Dialog</p>
  <form method="dialog">
    <input type="file" />
  </form>
</dialog>

JavaScript的:

const dialog = document.getElementById('file-dialog')
dialog.addEventListener('close', (event) => {
    dialog.open = true;
});

你最好的办法是不要使用对话框元素,但不确定你的用例。