Какие значения могут отображаться в атрибуте "selected" тега "option"?

У меня есть разметка, подобная следующей:

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

В этом случае "Оранжевый" отображается как выбранный элемент. Я бы ожидал, что атрибут selected пустой будет отменять его эффекты. Есть ли способ написать это, не выходя из атрибута?

Ответ 1

Различные браузеры могут относиться к этому атрибуту по-разному. Согласно документации MSDN (для Internet Explorer):

Чтобы выбрать элемент в HTML, это не необходимо установить значение SELECTED - true. Просто наличие набора атрибутов SELECTED его значение равно true.

В firefox и Safari это работает:

<option selected='false' />

Из того, что я могу сказать, посмотрев официальный стандарт WC3 для HTML4, поддерживаемый случай:

<option selected='selected' />

Вам нужно либо выборочно испускать атрибут, либо использовать javascript для управления тем, какой элемент изначально выбран.

Ответ 2

Спецификация HTML5

http://www.w3.org/TR/html5/forms.html#attr-option-selected:

Выбранный атрибут является логическим атрибутом.

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", так как <option selected> является недопустимым, а другие альтернативы менее читабельны. Иначе просто используйте <option selected>, поскольку он короче.

Ответ 3

единственное допустимое значение для выбранного атрибута в XHTML " выбрано", поэтому, если вы хотите, чтобы ваша разметка была совместимой с XHTML и работала во всех браузерах, оставив ее, является единственным выбором, чтобы сделать ее невыделенной

Ответ 4

Нет, существование выбранного атрибута говорит браузеру, что это выбранный элемент. Все, что внутри кавычек, игнорируется.

Изменить: что вы могли бы сделать (с помощью Javascript) искать метки параметров с выбранным = "" и удалять из них выбранный атрибут.

Ответ 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 могут работать, но нестандартные.

Обратите внимание, что для списка параметров первый выбирается по умолчанию, поэтому в этом случае это не обязательно.

Ответ 6

Согласно w3schools, вы должны установить его как: selected = "selected". Это говорит вам, какой вариант изначально выбран, и позволяет позже установить его через script.

Ответ 8

Вам лучше установить свойство selectElement.selectedIndex из Javascript или вообще удалить атрибут.