Jakie wartości mogą pojawić się w atrybucie "selected" tagu "option"?

Mam jakieś znaczniki podobne do poniższych:

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

W tym przypadku, "pomarańczowy" pokazuje jako zaznaczony element. Spodziewałem się, że uczynienie atrybutu pustego selected cofnie jego efekty. Czy istnieje sposób, aby to napisać bez pomijania atrybutu?

Author: Travis Beale, 2009-06-23

8 answers

Inna przeglądarka może traktować ten atrybut inaczej. Zgodnie z dokumentacją MSDN (dla Internet Explorera):

Aby wybrać element w HTML, nie jest niezbędne do ustawienia wartości Wybrany atrybut to true. Mere obecność wybranego zestawu atrybutów jego wartość jest prawdziwa.

W Firefoksie i Safari to działa:

<option selected='false' />

Z tego co mogę powiedzieć patrząc na oficjalny standard WC3 dla HTML4, obsługiwany przypadek jest tylko:

<option selected='selected' />

Będziesz musiał albo wybiórczo emitować atrybut, albo użyć javascript, aby kontrolować, który element jest początkowo wybrany.

 33
Author: LBushkin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-23 17:26:47

HTML5 spec

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

Zaznaczony atrybut content jest atrybutem logicznym.

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

Obecność atrybutu boolean na elemencie reprezentuje wartość true, a brak atrybutu reprezentuje wartość false.

Jeśli atrybut jest obecny, jego wartość musi jest to pusty łańcuch lub wartość, która jest niewrażliwa na wielkość liter w ASCII dla kanonicznej nazwy atrybutu, bez początkowych lub końcowych białych znaków.

Wniosek

Następujące są poprawne, równoważne i prawdziwe :

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

Następujące są nieprawidłowe :

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

Brak atrybutu jest jedyną poprawną składnią false :

<option />

Zalecenie

Jeśli zależy ci na pisaniu poprawnego XHTML, użyj selected="selected", ponieważ {[4] } jest niepoprawne, a inne alternatywy są mniej czytelne. W przeciwnym razie użyj <option selected>, ponieważ jest krótszy.

 35
Author: Ciro Santilli TRUMP BAN IS BAD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Jedyną dozwoloną wartością dla wybranego atrybutu w XHTML jest " selected ", więc jeśli chcesz, aby znaczniki były zgodne z XHTML i działały we wszystkich przeglądarkach, pozostawienie go jest jedynym wyborem, aby uczynić go niezaznaczonym

 7
Author: Rony,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-23 17:27:35

Nie, istnienie wybranego atrybutu informuje przeglądarkę, że jest to wybrany element. Wszystko w cudzysłowach jest ignorowane.

Edit: co można zrobić (z Javascript) to szukać znaczników opcji za pomocą selected= "" i usunąć z nich wybrany atrybut.

 4
Author: jimyi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-23 17:24:02

W HTML (w przeciwieństwie do XHTML) prosty atrybut selected, bez żadnej wartości, działa dobrze:

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

W XHTML (w tym XHTML5) potrzebujesz wartości, która powinna być również selected:

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

To również działa dobrze w HTML.

Jest to zazwyczaj przypadek wartości logicznych w (X) HTML. Sposobem, aby ustawić je na fałszywe, jest całkowite ich pominięcie. Ustawienie wartości true i false może działać, ale jest niestandardowe.

Zauważ, że dla listy opcji pierwsza jest wybierana przez domyślne, więc w tym przypadku nie jest to wcale konieczne.

 3
Author: TRiG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-08 17:40:27

Zgodnie z w3schools , powinieneś ustawić go jako: selected= "selected". Podpowie Ci, która opcja jest początkowo wybrana, i pozwala ustawić ją za pomocą skryptu później.

 0
Author: amischiefr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-23 17:25:25

Nie ma innych ważnych wartości innych niż "selected" dla tego atrybutu. ( http://www.w3schools.com/TAGS/att_option_selected.asp )

 0
Author: Chet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-23 17:27:10

Lepiej ustawić selectElement.właściwość selectedIndex z Javascript lub całkowite usunięcie atrybutu.

 -2
Author: Jeff Meatball Yang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-23 17:26:20