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

StackOverflow https://stackoverflow.com/questions/1033944

  •  06-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

  

Чтобы выбрать элемент в HTML, это не   необходимо установить значение   ВЫБРАН атрибут для истины. Простой   наличие набора атрибутов SELECTED   его значение к истине.

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

<option selected='false' />

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

<option selected='selected' />

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

Другие советы

Спецификация 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" />

Отсутствие атрибута является единственным допустимым синтаксисом для ложь:

<option />

Рекомендация

Если вы заботитесь о написании корректного XHTML, используйте selected="selected", поскольку <option selected> является недопустимым, а другие альтернативы менее читабельны.В противном случае, просто используйте <option selected> так как это короче.

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

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

Изменить. Что вы можете сделать (с помощью Javascript), так это найти теги параметров с selected = " " и удалить из них выбранный атрибут.

В HTML (в отличие от XHTML) простой атрибут selected , вообще без значения, работает нормально:

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

В XHTML (включая XHTML5) вам нужно значение, которое также должно быть selected :

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

Это также хорошо работает в HTML.

Обычно это относится к логическим значениям в (X) HTML. Способ установить их в ложь - полностью их опустить. Установка значений true и false может работать, но не является стандартной.

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

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

Нет никаких других допустимых значений, кроме " selected " для этого атрибута. ( http://www.w3schools.com/TAGS/att_option_selected.asp ) / р>

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top