首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不关闭模式的情况下关闭带有Escape的模态对话框中的本机选择元素?

如何在不关闭模式的情况下关闭带有Escape的模态对话框中的本机选择元素?
EN

Stack Overflow用户
提问于 2022-11-11 09:49:24
回答 1查看 25关注 0票数 0

我使用带有role=dialog的泛型除数创建了一个普通HTML模型。我想关闭逃逸模式。

然而,模型本身也包含一个本机<select>元素,它的选项列表可以与Escape一起关闭。添加了封闭的代码后,在打开<select>元素时按Escape也会关闭模式。

如何只关闭逃逸上的<select>元素,并保持模态对话框打开?

代码语言:javascript
复制
window.onkeyup = (event) => {
  if (modal.style.display === "block") {
    if (event.code === "Escape") {
      modal.style.display = "none"
    }
  }
}

我创建了一个极小例子小提琴来演示这个问题。尝试打开“模式”,然后打开<select>元素(使用空格、Alt + Down、单击或点击,或者其他什么),然后在<select>选项列表打开时按Escape键,查看我的问题是什么。

在Ubuntu上的Firefox106.0.5上观察到(Gnome,X11)。

EN

回答 1

Stack Overflow用户

发布于 2022-11-11 11:43:00

作为部分解决办法,您可以添加一个stopPropagation调用到<select>元素中,以部分解决这个问题,如另一个极小示例小提琴所示。小提琴还在模态对话框容器中包含tabindex=0,以证明<select>元素不在焦点时,Escape处理程序正确工作。

这将导致<select>元素不再错误地关闭模式对话框,如果在选项列表打开时按下Escape;然而,即使选项列表未打开,模态对话框也不会在Escape上关闭。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74400670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档