On Tue, Oct 28, 2008 at 11:39 AM, Markus Ernst <span dir="ltr">&lt;derernst@gmx.ch&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Ian Hickson schrieb:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d">
On Tue, 31 Oct 2006, Lachlan Hunt wrote:<br>
</div><div class="Ih2E3d"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
There are workarounds using fieldset and legend for the question, like this.<br>
<br>
&lt;fieldset&gt;<br>
 &nbsp;&lt;legend&gt;Gender:&lt;/legend&gt;<br>
 &nbsp;&lt;label for=&quot;m&quot;&gt;&lt;input type=&quot;radio&quot; id=&quot;m&quot; name=&quot;gender&quot; value=&quot;m&quot;&gt;<br>
 &nbsp; &nbsp;Male&lt;/label&gt;<br>
 &nbsp;&lt;label for=&quot;f&quot;&gt;&lt;input type=&quot;radio&quot; id=&quot;f&quot; name=&quot;gender&quot; value=&quot;f&quot;&gt;<br>
 &nbsp; &nbsp;Female&lt;/label&gt;<br>
&lt;/fieldset&gt;<br>
</blockquote>
<br>
That&#39;s not a workaround. It&#39;s exactly what you&#39;re supposed to do. &lt;fieldset&gt; lets you group a set of controls with a common legend, which is exactly the problem you described.<br>
</div></blockquote>
<br>
IMO Lachlans opinion about the fieldset solution being a workaround reflects a basic problem with those form elements: they are highly presentational. Your example:<div class="Ih2E3d"><br>
<br>
&lt;fieldset&gt;<br>
 &nbsp;&lt;legend&gt;Gender:&lt;/legend&gt;<br>
 &nbsp;&lt;label for=&quot;m&quot;&gt;&lt;input type=&quot;radio&quot; id=&quot;m&quot; name=&quot;gender&quot; value=&quot;m&quot;&gt;<br>
 &nbsp; &nbsp;Male&lt;/label&gt;<br>
 &nbsp;&lt;label for=&quot;f&quot;&gt;&lt;input type=&quot;radio&quot; id=&quot;f&quot; name=&quot;gender&quot; value=&quot;f&quot;&gt;<br>
 &nbsp; &nbsp;Female&lt;/label&gt;<br>
&lt;/fieldset&gt;<br>
<br></div>
serves the same purpose as this one:<br>
<br>
&lt;label for=&quot;gender&quot;&gt;Gender:&lt;/label&gt;<br>
&lt;select id=&quot;gender&quot; name=&quot;gender&quot;&gt;<br>
 &nbsp;&lt;option value=&quot;&quot;&gt; &lt;/option&gt;<br>
 &nbsp;&lt;option value=&quot;m&quot;&gt;Male&lt;/option&gt;<br>
 &nbsp;&lt;option value=&quot;f&quot;&gt;Female&lt;/option&gt;<br>
&lt;/select&gt;<br>
<br>
Both provide a list of values, of which zero or one can be selected. The only real difference is in the presentation, but structurally they are totally different. Now consider this:<br>
<br>
&lt;fieldset&gt;<br>
 &nbsp;&lt;legend&gt;Sender:&lt;/legend&gt;<br>
 &nbsp;&lt;label for=&quot;n&quot;&gt;&lt;input type=&quot;text&quot; id=&quot;n&quot; name=&quot;n&quot; value=&quot;&quot;&gt;<br>
 &nbsp; &nbsp;Name&lt;/label&gt;<br>
 &nbsp;&lt;label for=&quot;m&quot;&gt;&lt;input type=&quot;text&quot; id=&quot;m&quot; name=&quot;m&quot; value=&quot;&quot;&gt;<br>
 &nbsp; &nbsp;E-mail&lt;/label&gt;<br>
&lt;/fieldset&gt;<br>
<br>
This is structurally the same as the radio button example, except some attribute values, but serves a totally different purpose. If you look at it this way, calling the fieldset solution for grouping a group of radio buttons (which are actually grouped by their common name attribute value) a workaround does not seem totally wrong to me.<br>

<br>
I consider a total re-thinking of select, input type=&quot;checkbox&quot; and input type=&quot;radio&quot; elements as highly desirable, though I see that this might cause more serious backwards compatiblity problems than for example removing the font tag. One possible solution could be using the select tag with a type attribute:<br>

<br>
&lt;label for=&quot;gender&quot;&gt;Gender:&lt;/label&gt;<br>
&lt;select id=&quot;gender&quot; name=&quot;gender&quot; type=&quot;boxgroup&quot;&gt;<br>
 &nbsp;&lt;option value=&quot;&quot;&gt; &lt;/option&gt;<br>
 &nbsp;&lt;option value=&quot;m&quot;&gt;Male&lt;/option&gt;<br>
 &nbsp;&lt;option value=&quot;f&quot;&gt;Female&lt;/option&gt;<br>
&lt;/select&gt;<br>
<br>
Like this, the appearance would be controlled by the type and multiple attributes; type=&quot;boxgroup&quot; in combination with multiple would create a group of checkboxes, without multiple a group of radio buttons. And older UAs would render it as a selectbox in all cases, thus preserving usability of the form.<br>

<br>
And the label question would be consistently solved.</blockquote><div><br>FWIW, I completely agree with Markus re: the semantic similarity between &lt;select&gt; &lt;input radio&gt; and &lt;input checkbox&gt;.&nbsp; In my own programming utilities I have a function which does exactly what Markus talks about; it takes an array of value/text pairs, a display specifier (&quot;collapsed&quot;/&quot;expanded&quot;), and a multiplicity specifier (&quot;single/multiple&quot;) (also some arguments to specify @name and #id prefixes and such, but that&#39;s not relevant here).&nbsp; It uses this to transform the array into a &lt;select&gt;, &lt;select multiple&gt;, &lt;input radio&gt; group, or &lt;input checkbox&gt; group as necessary.&nbsp; This is very easy precisely because of the clear semantic mappings between the four types of input.<br>
<br>I haven&#39;t given it serious thought, but as far as I can tell his proposed solution (piling all four display types onto the &lt;select&gt; tag) would work wonderfully as a semantic consolidation/simplification, and be nicely backwards-compatible.&nbsp; There are still good reasons to support keeping the &lt;input&gt; types of radio and checkboxes, of course (frex, wrapping a form around a list, and putting an &lt;input&gt; within each &lt;li&gt;), but this proposal would simplify the most common case.<br>
</div></div>