Re: Radio and checkbox texts

David Dorward wrote:

> The current syntax, which is supported by browsers, is:
>
> <fieldset>
> <legend>Gender</legend>
> <input name=gender value=male type=radio id=gender_m>
> <label for=gender_m>Male</label>
> <input name=gender value=female type=radio id=gender_f>
> <label for=gender_f>Female</label>
> </fieldset>

This is a very, very poor example, because
a) it confuses sex with gender
b) it does not contain a clear question to be answered (whose "gender"?)
c) it lacks an explicit option of not answering at all
d) it has no initial (default) value defined
e) consequently, depending on the vintage of the specification and the 
browser, the choice may be defaulted to "Male", so you cannot tell the 
real males from defaulted males
f) it is usually unnecessary for the declared purpose of the form, and 
hence illegal at least in EU countries, by the directive on protection 
of personal data, to ask for information like a person's "gender"
g) it does not apply the international standard on internal coding of 
information about a person's sex in data.

Then again, it's almost a tradition in HTML specifications to present 
very, very poor examples.

Moreover, the default rendering is typically
( ) Male ( ) Female
with no line break, thereby letting stupid males to click on the button 
_after_ "Male" just because they are, well, careless and stupid.

In appropriate markup, the fields would be in separate lines. This could 
be achieved by using <field> markup that is defined as block-level. 
Compatibility with existing wowsers would be achievable by taking the 
precaution of adding a <br> tag.

> I don't know any
> graphical browser (in common use today) that doesn't extend the click
> target of an input onto the label associated with it via the for
> attribute.

That's definitely an improvement. However, the large majority of forms 
on existing web pages lacks such markup, so most users probably haven't 
even noticed the feature.

The original sin in this issue is that forms were defined in HTML so 
that there was no implied association between label texts and input 
fields and no way to declare it explicitly either. What was souped up 
later is rather odd and hasn't become popular among authors. And that's 
no wonder. It's _unnatural_ to have to invent an identifier and to use 
two attributes to specify a simple relationship.

> We already have a generic system for associating labels with form
> controls, we don't need a specific one just for radio buttons.

The "generic system" requires a new identifier to be invented for each 
and every input field and two attributes to be written, in addition to 
adding one markup element, <label>, with no implied ease on styling, so 
we would really need a better generic system. Actually, it is there, 
just
a) under the grossly misleading name <label>
b) with no default rendering as a block.

Jukka K. Korpela ("Yucca")
http://www.cs.tut.fi/~jkorpela/ 

Received on Thursday, 24 April 2008 11:35:08 UTC