Каков синтаксис для логических атрибутов, например проверенный флажок, в HTML? - PullRequest
25 голосов
/ 20 мая 2010

Звучит как глупый вопрос, но мне интересно, каков наилучший способ заявить, что флажок установлен / снят в HTML.

Я видел много разных примеров:

<input type="checkbox" checked="checked" />
<input type="checkbox"  />

<input type="checkbox" checked="yes" />
<input type="checkbox" checked="no" />

<input type="checkbox" checked="true" />
<input type="checkbox" checked="false" />

Какие браузеры работают с какими из них, и что наиболее важно, jQuery определяет, какой флажок установлен во всех 3?

Edit: Спецификация W3C, по-видимому, подразумевает, что только проверенный атрибут является правильным. Означает ли это, что check = "false" и check = "no" по-прежнему будут отмечать этот флажок?

Ответы [ 9 ]

31 голосов
/ 20 мая 2010

В HTML:

<input type="checkbox" checked>
<input type="checkbox" checked="checked">

Для XHTML вы должны использовать пары соответствия атрибута / значения:

<input type="checkbox" checked="checked" />
7 голосов
/ 20 мая 2010

HTML:

Любой из них должен быть правильным, как говорится на W3C странице . checked атрибут просто должен быть установлен.

Как я писал в комментарии Короната:

На самом деле, это не имеет значения, если это проверил, проверил = "что угодно" или проверено = «проверено». Это проверка логическое значение, так что это либо правда (установлено) или false (не установлено).

XHTML:

Вы должны указать его, поэтому checked="checked" является единственным действительным. Большинство браузеров, вероятно, будут правильно анализировать значения HTML, но тем не менее на вашей странице будет ошибка.

5 голосов
/ 20 мая 2010

Согласно спецификации HTML правильное значение:

<input type="checkbox" checked />
<input type="checkbox" />

Я использую это, и jQuery отлично с ними работает.

2 голосов
/ 20 мая 2010

Быстрый тест показывает, что jQuery приравнивает любое установленное значение к проверяемому.

alert( $('input:checked').length );
// Returns 5

Даже пустая строка и отрицательные значения.

1 голос
/ 20 мая 2010

Спецификация W3C, по-видимому, подразумевает, что только проверенный атрибут является правильным. Означает ли это, что check = "false" и check = "no" по-прежнему будут отмечать этот флажок?

Точно. Вот почему плохая идея использовать checked="true" и checked="yes", они подразумевают, что checked="false" и checked="no" не будут устанавливать флажок.

1 голос
/ 20 мая 2010

Я бы осторожно использовал его на Chrome, Firefox и Opera. У Chorme, кажется, есть проблема с отображением флажков, Firefox чувствителен к регистру стилей и тегов, а Opera работает нормально, но медленно обновляется. Это могут быть только версии используемых браузеров.

Кроме того, я считаю, что он должен работать <input type="checkbox" checked /> очень хорошо во всех из них. Единственная разница в том, как отдельные браузеры отображают контент на странице.

1 голос
/ 20 мая 2010

Наличие «проверенного» * ​​1001 * свойства указывает статус. Значение не имеет значения / не нужно.

<input type="checkbox" checked="checked" />
<input type="checkbox"  />

мое предложение

1 голос
/ 20 мая 2010

Согласно рекомендациям W3C ваше первое предложение верно.

0 голосов

HTML5 spec :

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

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

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

Заключение

Пусть boolean будет логическим атрибутом тега tag, например checked и <input type="checkbox".

Ниже приведены действительные, эквивалентные и истинные :

<tag boolean />
<tag boolean="" />
<tag boolean="boolean" />
<tag boolean="BoOlEaN" />

недействительно :

<tag boolean="0" />
<tag boolean="1" />
<tag boolean="false" />
<tag boolean="true" />

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

<tag />

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

Если вы хотите написать действительный XHTML, используйте boolean="boolean", поскольку <tag boolean> является недействительным XHTML (но допустимым HTML), а другие альтернативы менее читабельны. Иначе, просто используйте <tag boolean>, так как оно короче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...