41

我有一些类似于以下的标记:

<select>
  <option selected="selected">Apple</option>
  <option selected="">Orange</option>
</select>

在这种情况下,“橙色”显示为所选项目。我本来希望将selected属性设为空白会撤消其效果。有没有办法在不简单地忽略属性的情况下编写这个?

4

8 回答 8

39

HTML5 规范

https://www.w3.org/TR/html51/sec-forms.html#the-option-element

选择的内容属性是一个布尔属性。

http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes

元素上存在布尔属性表示真值,不存在该属性表示假值。

如果存在该属性,则其值必须是空字符串或与属性的规范名称匹配的不区分大小写的 ASCII 值,并且没有前导或尾随空格。

结论

以下是有效的、等价的和真实的

<option selected />
<option selected="" />
<option selected="selected" />
<option selected="SeLeCtEd" />

以下是无效的:

<option selected="0" />
<option selected="1" />
<option selected="false" />
<option selected="true" />

缺少该属性是false的唯一有效语法:

<option />

推荐

如果您关心编写有效的 XHTML,请使用selected="selected", since<option selected>是无效的,并且其他替代方案的可读性较差。否则,只需使用它,<option selected>因为它更短。

于 2014-07-05T16:21:45.230 回答
32

不同的浏览器可能会以不同的方式对待这个属性。根据 MSDN 文档(用于 Internet Explorer):

要在 HTML 中选择一个项目,不必将 SELECTED 属性的值设置为 true。SELECTED 属性的存在将其值设置为 true。

在 Firefox 和 Safari 中,这确实有效:

<option selected='false' />

从我可以通过查看 HTML4 的官方 WC3 标准得知,支持的情况仅为:

<option selected='selected' />

您要么需要选择性地发出属性,要么使用 javascript 来控制最初选择的项目。

于 2009-06-23T17:26:47.320 回答
7

XHTML 中 selected 属性的唯一允许值是“ selected ”,因此如果您希望标记符合 XHTML 并在所有浏览器中工作,则将其排除在外是使其未选中的唯一选择

于 2009-06-23T17:27:35.090 回答
5

在 HTML(相对于 XHTML)中selected,一个没有任何值的简单属性可以正常工作:

<option selected>Apple</option>
<option>Orange</option>

在 XHTML(包括 XHTML5)中,您需要一个值,它也应该是selected

<option selected="selected">Apple</option>
<option>Orange</option>

这在 HTML 中也可以正常工作。

这通常是 (X)HTML 中的布尔值的情况。将它们设置为 false 的方法是完全忽略它们。设置true和的值false可能有效,但不是标准的。

请注意,对于选项列表,默认情况下会选择第一个,因此在这种情况下根本不需要。

于 2012-11-08T17:40:27.513 回答
4

不, selected 属性的存在告诉浏览器它是选定的项目。引号内的任何内容都将被忽略。

编辑:您可以做的(使用 Javascript)是查找带有 selected="" 的选项标签,并从中删除 selected 属性。

于 2009-06-23T17:24:02.597 回答
0

根据w3schools,您应该将其设置为:selected="selected"。这会告诉您最初选择了哪个选项,并允许您稍后通过脚本进行设置。

于 2009-06-23T17:25:25.763 回答
0

除了该属性的“选定”之外,没有任何其他有效值。(http://www.w3schools.com/TAGS/att_option_selected.asp

于 2009-06-23T17:27:10.003 回答
-2

您最好从 Javascript 设置 selectElement.selectedIndex 属性,或者完全删除该属性。

于 2009-06-23T17:26:20.550 回答