Ответ 1
Используйте следующие
<option value="">Choose</option>
Добавьте вышеприведенную серию в качестве первого варианта
- считается действительным, поскольку первый дочерний элемент не имеет содержимого.
Используя следующий код на select
:
<select name="province" id="province" required="required">
<optgroup label="Provinces">
<option value="Alberta">Alberta</option>
<option value="British Colombia">British Colombia</option>
<option value="Manitoba">Manitoba</option>
<option value="New Brunswick">New Brunswick</option>
<option value="Newfoundland and Labrador">Newfoundland and Labrador</option>
<option value="Nova Scotia">Nova Scotia</option>
<option value="Ontario" selected="selected">Ontario</option>
<option value="Prince Edward Island">Prince Edward Island</option>
<option value="Quebec">Quebec</option>
<option value="Saskatchewan">Saskatchewan</option>
</optgroup>
<optgroup label="Territories">
<option value="Northwest Territories">Northwest Territories</option>
<option value="Nunavut">Nunavut</option>
<option value="Yukon">Yukon</option>
</optgroup>
</select>
Мне нужно иметь такие же значения, как и параметры, которые требуются только в соответствии с рекомендациями. Этот код работает нормально, но не проходит проверку W3C:
A
select
с атрибутомrequired
и без атрибутаmultiple
и размером 1, должен иметь дочерний элементoption
.
Каким будет решение этой проблемы?
Используйте следующие
<option value="">Choose</option>
Добавьте вышеприведенную серию в качестве первого варианта
Иногда вы просто хотите иметь пустой параметр. Раньше вы могли просто вставить одно пространство, и валидатор w3c примет его. Это использовалось для работы:
<option value=""> </option>
Теперь, кажется, вы должны использовать неразрывное пространство для прохождения проверки:
<option value=""> </option>
Поддерживающий W3C HTML Checker (aka validator) здесь.
Теперь, кажется, вы должны использовать неразрывное пространство для прохождения проверки:
<option value=""> </option>
Да, я не уверен, когда я изменил это в контролере. Я думал, что ничего не изменил через пару лет, но, несмотря на это, контролер соответствует спецификации HTML на этом, потому что если вы перейдете к https://html.spec.whatwg.org/multipage/forms.html#the-option-element и прочитайте подразделение Content model в главе этого раздела, вы увидите:
Если элемент не имеет атрибута метки: Текст, который не является межэлементным пробелом.
В HTML определение символов inter-element whitespace
включает в себя только U + 0020 (пробел), вкладку U + 000A (LF), U + 000C FORM FEED и U + 000D (CR).
Другими словами, HTML по существу рассматривает неразрывный символ пробела как текст, а не символ пробела, поэтому его внутри элемента option
делает этот элемент option
"непустым" (насколько это возможно spec).
Итак, выполнение <option value=""> </option>
действительно не рушится; вместо этого, это вполне разумный способ (опять же, что касается спецификации) сделать option
непустым.