1

我们在上一个问题中确定 IE 不支持 HTML SELECT 的许多功能。您是否会根据您的经验推荐满足以下要求的替代小部件?

  1. 尊重contentEditable属性(如果为真,则不允许选择更改)
  2. 尊重disabled单个 OPTION 的属性(将它们显示为“灰色”或带有删除线字体,并使它们不可选择)
  3. 支持选项组(OPTGROUP元素)
  4. 支持和所有子元素中的style选项bordermarginSELECT
  5. OPTION支持动态添加和删除OPTGROUP元素
  6. 在 IE 6 及以上版本中支持上述内容

编辑:正如@Joel Coehoorn 所指出的,上述第 3 和第 5 项目前在 IE 中受支持。它们包含在此处以确保它们不会在替换小部件中被忽略。

4

2 回答 2

2

最后检查 IE6+ 是否支持 #3 和 #5,并且您可以(错误)使用 OPTGROUP 来解决大多数其他项目。

您可以通过在其中没有任何选项的 optgroup 来做到这一点,如下所示:

<optgroup label="--"></optgroup>

您可以根据需要制作任何标签,但关键是您最终会得到一个看起来像普通选项但无法选择的项目。这为各种乐趣打开了大门:

  • 您可以通过将特定项目添加为 optgroup 来禁用它们
  • 您可以通过将除当前选项以外的所有选项编码为 optgroups 来防止选择更改(如果需要,请使用其他一些文本键来指示它们已禁用)
  • 您可以使用空白、- 或 — 标签来指示简单的分隔符而不是整个组。

无论如何,这占了列表中#1 和#2 的大部分——至少是功能点。

“(误)使用”的原因是因为这不会通过大多数 html 验证器。但是,该技巧确实适用于所有主要浏览器。

于 2008-11-20T17:22:54.740 回答
1

我正在写这样一个小部件。我计划在我的下一个版本中实现 optgroup,希望在几天内实现,因为我已经取得了良好的进展。

演示页面

svn

于 2010-03-12T04:29:49.883 回答