【问题标题】:How do I temporarily remove an option in a select statement in Microsoft Edge?如何在 Microsoft Edge 的选择语句中临时删除选项?
【发布时间】:2015-11-07 01:08:40
【问题描述】:

在我的代码中,我利用禁用和启用样式标签的功能来隐藏/显示 optgroup 标签及其选项标签。但是,当在 Microsoft Edge 中以这种方式隐藏 optgroup 时,它会放置一个空行而不是根本没有行。

一个例子:

<optgroup class="my-option" label="truck">
  <option class="business">Business truck</option>
</optgroup>



<style id="enable_disable">
  .my-option {display: none; visibility:hidden;}
</style>

然后,在我的 javascript 代码中,我以这种方式隐藏 optgroup:

document.getElementById('enable_disable').media = 'all';

为了显示 optgroup,我这样做:

document.getElementById('enable_disable').media = 'disable';

如果我只为“业务”类执行此操作,则会发生同样的事情,除了用户可以选择该选项,他或她只是看不到文本,只是一个空白行。

编辑: Here 是我正在做的一个工作示例。您可以看到它在除 edge 之外的所有浏览器中的行为都相同。

【问题讨论】:

  • 您的代码保密吗?
  • 我添加了一些代码,以便您了解我在做什么
  • 你能告诉我为什么我被否决了吗?谢谢。
  • @WIll 您的问题可能被否决了,因为在您编辑之前它缺少代码示例
  • 啊,好的。我会确保在我以后的问题中加入代码示例。谢谢。

标签: css microsoft-edge optgroup


【解决方案1】:

不建议使用 CSS 隐藏 &lt;select&gt; 元素的子元素(至少目前是这样)。所有主要浏览器的结果都会有所不同。如果您想删除一个或一组选项,您应该实际删除它们 使用 JavaScript。

主要浏览器之间的一些不一致:

  • Chrome、Firefox 和 Edge 将显示第一项,即使它有 display: none
  • 当从下拉列表中选择另一个选项时,Chrome 和 Firefox 将被动地隐藏第一个项目(如果要隐藏它)。
  • 如果您专注于选择元素,Firefox 将允许您选择其他隐藏的值,然后按向上和向下箭头在选项中循环。

如果您保留对已删除元素的引用,moving it around is trivial

【讨论】:

  • 好吧,似乎唯一存在问题的主要浏览器是边缘。但是,如果我必须删除它然后再放回去,我可以这样做。
  • @Will 检查jsfiddle.net/fw18f485;当第一个项目是被隐藏的项目时,所有浏览器仍然显示该项目。另请注意,Firefox 将允许您使用键盘循环浏览隐藏的值。
  • 感谢您的回答。我想我需要更好地解释一下。我明天可以回复你。
  • @我会看到这个问题,但正如我在上面的回答中建议的那样,最好的方法是使用 JavaScript 删除子元素,并在以后恢复它。尝试使用 CSS 来控制可见性会导致许多跨浏览器问题。例如,注意如果您使用键盘箭头而不是展开列表,您仍然可以在 Mozilla Firefox 中选择值“C”和“D”(请参阅​​i.imgur.com/LTibnxP.gif)。我将为我们的团队提交一个错误,以评估 Edge 中的当前行为并考虑我们的选择(不是双关语,呵呵)。感谢分享问题!
  • 嗯,好的。没问题。感谢您帮助我找到最佳方法。
猜你喜欢
  • 2016-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-19
  • 2015-02-10
  • 2010-10-13
  • 2013-06-23
  • 1970-01-01
相关资源
最近更新 更多