это автофокус = «автофокус» или автофокус?


87

Кажется, я припоминаю, что большинство (возможно, все) атрибутов в предыдущих версиях HTML (до HTML5) требовали, чтобы атрибуты имели значения, например readonly="readonly".

Верно ли это для HTML5 и autofocusатрибута?


1
возможный дубликат stackoverflow.com/questions/1033944/…, поскольку оба относятся к логическим атрибутам (не отмечены)
Ciro Santilli 郝海东 冠状 病 六四 事件

Я согласен, что они похожи, но немного отличаются, поскольку они спрашивают о разных атрибутах.
Darryl Hein

1
только автофокус работает. протестировал его в FF, Opera и Chrome ..
Сохаил Ариф

Ответы:


94

В HTML вы можете использовать логические атрибуты со значениями или без них по своему усмотрению. Логическое, для W3C, как автофокусировкой может быть записан так autofocusили autofocus="autofocus"или же autofocus="".

Если вам не нужен автофокус, просто не пишите об этом.

Я думаю , что вы смущены , потому что XHTML требует значений для всех атрибутов: attributes="values".

Вот некоторая информация об использовании логических атрибутов в HTML: http://www.whatwg.org/specs/web-apps/current-work/multipage/common-microsyntaxes.html#boolean-attribute


19
+1 за упоминание XHTML. Соответствие XML XHTML - единственная причина, по которой когда-либо существовал disabled="disabled". То же самое и с закрывающими тегами. В HTML не нужно закрывать каждый тег (например, br или input), но поскольку XHTML должен быть допустимым XML, вам также нужны закрывающие теги.
Тим Бют

4
«XHTML - единственная причина, по которой когда-либо существовал disabled="disabled"». И SGML - единственная причина, по которой XHTML имеет silly="silly"синтаксис bool, а не просто whatever="true", а HTML - единственная причина, почему это this="false"может означать this = true. :)
Sz.

52

Цитируя спецификацию HTML5 и немного расширяя Pekka:

http://www.w3.org/TR/html5/forms.html#autofocusing-a-form-control:-the-autofocus-attribute :

Атрибут автофокуса - это логический атрибут.

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

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

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

Вывод :

Следующее является действительным, эквивалентным и истинным :

<input type="text" autofocus />
<input type="text" autofocus="" />
<input type="text" autofocus="autofocus" />
<input type="text" autofocus="AuToFoCuS" />

Следующие недействительны :

<input type="text" autofocus="0" />
<input type="text" autofocus="1" />
<input type="text" autofocus="false" />
<input type="text" autofocus="true" />

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

<input type="text"/>

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

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


1
«Если вас волнует ... XHTML». Неа. Пусть умрет.
Дем

22

Нет , достаточно указать сам атрибут. Так было и в HTML 4 .

Ряд атрибутов являются логическими атрибутами . Наличие логического атрибута в элементе представляет истинное значение, а отсутствие атрибута представляет ложное значение.

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

Пример:

<label><input type=checkbox checked name=cheese disabled> Cheese</label>

10
Дала Тиму принятый ответ ... ему нужна репутация больше, чем вам :)
Дэррил Хайн
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.