- From: Ken Geis <kgeis@berkeley.edu>
- Date: Wed, 16 Apr 2014 11:00:21 -0700
- To: "www-validator@w3.org" <www-validator@w3.org>
- CC: "Jukka K. Korpela" <jkorpela@cs.tut.fi>
Thanks for the clarification, Yucca.
I guess I have a problem with the spec. I believe that if my select is
required and I have an option selected, then I should not need a
placeholder. From what I've read, the following situation would be
legitimate in HTML 4.01 but not in HTML 5.
<!DOCTYPE html>
<title>test</title>
<select size=1 required>
<optgroup label=jkldf>
<option selected>hello
</optgroup>
</select>
I can work around this by adding a placeholder option with
style="display: none", but that smells bad.
Ken
On 04/16/2014 10:25 AM, Jukka K. Korpela wrote:
> 2014-04-16 17:25, Philip Taylor wrote:
>
>> (a) We should point out to Mr Geis that reading the HTML 4.01
>> specification is not always useful when deciding what is or
>> is not valid in HTML 5,
>
> Or, more exactly, that HTML 4.01 as such is irrelevant in that
> respect. There is no exact definition of exactly what HTML5 validation
> checks against, but it’s presumably either HTML5 CR or HTML 5.1
> Nightly or something between them, as interpreted and modified by the
> authors of the validator.
>
>> (b) Mr Geis specifically quoted "A select element with a /required/
>> attribute a ...", and this example, which meets that constraint, does
>> indeed fail as he asserts :
>>
>> <!DOCTYPE html>
>> <title>test</title>
>> <select size=1 required>
>> <optgroup label=jkldf>
>> <option>hello
>> </optgroup>
>> </select>
>
> That is correct, in two ways. It indeed fails, and failing validation
> is consistent with HTML5 CR, which says:
>
> "If a select element has a required attribute specified, does not have
> a multiple attribute specified, and has a display size of 1; and if
> the value of the first option element in the select element's list of
> options (if any) is the empty string, and that option element's parent
> node is the select element (and not an optgroup element), then that
> option is the select element's placeholder label option.
>
> If a select element has a required attribute specified, does not have
> a multiple attribute specified, and has a display size of 1, then the
> select element must have a placeholder label option."
> http://www.w3.org/TR/html5/forms.html#the-select-element
>
> It sounds complicated, and it is almost as complicated as it sounds.
> But reading backwards, the rules here say that in the given case, the
> <select> element must have a "placeholder label option", which means
> an <option> element that either has value="" or has no value attribute
> and no text content - a dummy option indeed. Moreover, the <option>
> element must be the first child of the <select> element, for example
>
> <select size=1 required>
> <option value="">Please select the greeting:
> <optgroup label=jkldf>
> <option>hello
> </optgroup>
> </select>
>
> This requirement has a fairly complex history. But the point is that
> it is in the HTML5 CR, so the error message "A select element with a
> required attribute and without a multiple attribute, and whose size is
> 1, must have a child option element" is adequate (though not ideal
> perhaps in its formulation).
>
> Yucca
>
Received on Wednesday, 16 April 2014 18:00:51 UTC