Подтвердить что ты не робот

HTML - Почему не является неопределенным = "неопределенным | истинным" уважаемым?

Я хочу использовать неопределенное свойство флажка. Изменение значения в JavaScript работает во всех браузерах (даже MSIE6!), Однако я не могу установить начальное значение через атрибуты HTML в любом.

Это по дизайну? Если да, почему? На стороне сервера я могу определить, что он неопределен. Итак, почему я не могу сказать браузеру? Если разработчики браузеров не беспокоились о FOUC (вспышки нестерпимого контента), если длительный script поддерживает настройку свойств?

Вот рабочий пример: http://jsfiddle.net/KUQC9/1/

4b9b3361

Ответ 1

Вы не можете сделать флажок неопределенным через HTML по дизайну. См. Эту статью в css-tricks.com, в которой подробно обсуждается тема.

Что касается "почему" в вашем вопросе, есть информация о списках рассылки W3C, которые могут быть полезны:

  • Похоже, что идея присвоения флажков значения трех состояний (по-видимому, проверенных, непроверенных, неопределенных) считалась, но не реализована из-за проблем с обратной совместимостью
  • Единственное упоминание истинного атрибута indeterminate HTML "content", как показано в вашем примере, которое я мог найти, было здесь:
    • В этом сообщении
    • И ответ
    • Вы можете обратиться к тем, кто участвует в этом потоке, для получения дополнительной информации.

Для того, что стоит, на самом деле существует селектор :indeterminate CSS (он, как представляется, рассматривается как другие псевдоклассы CSS, такие как :visited, которые также невозможно установить через HTML напрямую, так что, возможно, это еще одна причина indeterminate тоже не может быть). В своей демонстрации селектора CSS сам W3C использует тот же подход, что и вы: демоверсия демонстратора CSS W3C. В свете этого я бы сказал, что вы используете лучший метод, доступный для установки неопределенного состояния флажка

Ответ 2

Это по дизайну. Единственным HTML-способом для обозначения состояния флажка является проверенный атрибут; это потому, что флажок имеет значение true/false, а не true/false/unknown. Маркирование чего-то неопределенного может быть сделано с помощью Javascript, но это не изменит фактическое /sumbitted значение этого флажка.

Если вы действительно хотите инициализировать флажки неопределенными, вам нужно сделать это с помощью Javascript (я бы предположил, что это событие загрузки).