Ian Hickson schrieb:
On Mon, 12 Oct 2009, Markus Ernst wrote:
Ian Hickson schrieb:
Additionnally I want to suggest to make it possible to place the legend element outside the fieldset element, providing a "for" attribute (just as it is possible to place the label element apart from it's form field element).
This is significantly harder to pull off, for the same reason that we haven't been able to use <legend> for <figure>. I recommend we wait for the next version of HTML before doing this.
Would it be possible and easy to allow <label> for fieldsets?

I don't understand the use case.

I am sorry I seem to have missed to make the use case really transparent. My use case is a template system with separate placeholders for labels and input fields, where input fields can be fieldsets in some cases, e.g.:


Relevant part of the template:

<!-- BEGIN form-fields-loop -->
<tr>
  <td><h2>{label}</h2></td>
  <td>{input-html}</td>
</tr>
<!-- END form-fields-loop -->


Placeholder outputs of first row:

{label}: <label for="q1">What is your name?</label>

{input-html}:
<input id="q1" type="text" name="Name">


Placeholder outputs of 2nd row:

{label}: <label for="q2">What is favourite pet?</label>

{input-html}:
<fieldset id="q2">
  <p><label><input type="radio" name="Pet" value="Cat">Cat</label></p>
  <p><label><input type="radio" name="Pet" value="Dog">Dog</label></p>
  <p><label><input type="radio" name="Pet" value="Ant">Ant</label></p>
</fieldset>


Placeholder outputs of 3rd row:

{label}: <label for="q3">When are you born?</label>

{input-html}:
<fieldset id="q3">
  <label>Month:
    <select name="Month">
      <option value="01">January</option>
      ...
    </select>
  </label>
  <label>Year: <input type="text" name="Year" size="4"></label>
</fieldset>


Rows 2 and 3 illustrate the use case. For my original suggestion replace <label> with <legend> in those rows.


This looks somehow consistent to me:

<h2><label for="question1">Favorite pet?</label><h2>
<fieldset id="question1">
  <p><label><input type="radio" name="q1" value="Cat">Cat</label></p>
  <p><label><input type="radio" name="q1" value="Dog">Dog</label></p>
  <p><label><input type="radio" name="q1" value="Ant">Ant</label></p>
</fieldset>

Why is this preferable to:

 <fieldset>
   <legend>Favorite pet?</legend>
   <p><label><input type="radio" name="q1" value="Cat">Cat</label></p>
   <p><label><input type="radio" name="q1" value="Dog">Dog</label></p>
   <p><label><input type="radio" name="q1" value="Ant">Ant</label></p>
 </fieldset>

It is in a case where you want to output the label/legend separate from the fieldset HTML, as in the above example.

or:

<label>
  <h2>Favorite pet?<h2>
  <fieldset>
    <p><label><input type="radio" name="q1" value="Cat">Cat</label></p>
    <p><label><input type="radio" name="q1" value="Dog">Dog</label></p>
    <p><label><input type="radio" name="q1" value="Ant">Ant</label></p>
  </fieldset>
</label>

Why is this preferable to the above?

This is not preferable, I just mentioned this as it is the other way <label> can be applied.

I don't understand why the <fieldset> and <legend> can't be in the template.
That is how I do it now. The downside of it is the fact that some themplate authors might forget it - a relevant number of web designers in fact don't even know about fieldsets, as forms usually "work" with or without them. Anyway it is not a big problem; it would just be a nice enhancement of consistency if the template engine were able to output *all* form structuring elements.

I don't understand the problem, but if it's not a big problem, then I would suggest we punt on it until the next version.

I know the HTML5 spec is quite advanced already. Having <label> for <fieldset> (or <legend> outside it) would make things easier in some special cases, and maybe also promote the use of fieldsets. If this is a non-trivial change or even possibly introduces new problems, of course it might be better to schedule it for later versions.

Reply via email to