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? 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>

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>

Background: When writing template based applications, it can be useful to provide a placeholder for the whole fieldset, and another one for the legend, as template authors might want to place or style them individually.

Example - a questionnaire:

Template Variable {question} outputs:
<legend for="question1">What ist your favorite Pet?</legend>

Template Variable {answers} outputs:
<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>

One author might want to use this template:
<h2>{question}</h2>
{answers}

The other one prefers:
<table>
  <tr>
    <td>{question}</td>
    <td>{answers}</td>
  </tr>
</td>

While the desired results can be easily achieved with the current legend specification when coding manually, it is quite hard to implement with a template system, needing separate template variables for both the fieldset start and end tags, and a loop for the questions. With the focus of making an application as easy to use as possible (which includes template authoring), application authors might rather go without fieldset and legend, and accept the loss of structural consistency and accessibility as a trade-off.

I am sure this change would not break legacy content in new browsers; anyway I have no Idea how far it would break HTML5 content in legacy browsers.

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.

Reply via email to