[whatwg] Suggestion: Implementation of Tabbed Forms

Matthew Raymond mattraymond at earthlink.net
Tue Aug 17 06:57:57 PDT 2004


Ian Hickson wrote:
> At the moment the spec says it would be:
> 
>    <switch>
>      <section>
>        <h1>Exclusive Section 1</h1>
>      </section>
>      <section>
>        <h1>Exclusive Section 2</h1>
>      </section>
>    </switch>

    I presume there is a mechanism for selecting a specific section. If
so, would there be markup that would serve a function similar to a VB
tabstrip? Will there be a markup solution to selecting a section?
Perhaps something like this:

<tabstrip>
   <tabs>
     <tab for="section1"><a href="#section1">Section 1</a></tab>
     <tab for="section2"><a href="#section1">Section 2</a></tab>
     <tab for="section3"><a href="#section1">Section 3</a></tab>
   </tabs>
   <switch>
     <section id="section1">
       ...Stuff for Section 1...
     </section>
     <section id="section2">
       ...Stuff for Section 2...
     </section>
     <section id="section3">
       ...Stuff for Section 3...
     </section>
   </switch>
</tabstrip>

    Note that <a> elements will be ignored in the <tab> elements, and 
are there solely for graceful degradation.

> I don't really like the name "switch", but it is what SVG and XForms have 
> and it seems better than the alternatives I've considered (thanks to 
> everyone who suggested these, by the way):
> 
>    <blockgroup>

    Not bad, but it fails to communicate the fact that only one block is
visible at a time.

>    <card>
>    <cardLayout>

    What's a card? I get the deck metaphor, but only because I've seen
the XUL element <deck>, which I think is the closest thing XUL has to
your <switch> example.

>    <exblock>
>    <exgroup>

    Not clear enough.

>    <flip>
>    <mebc>

    I don't even know what these are supposed to mean.

    MEBC = Mutually Exclusive Block Container???

>    <mutex>

    Programmers would probably like this one, but others wouldn't 
understand.

>    <mutexgroup>

    Suffers from the same problem as above, plus it's longer.

>    <mutgroup>

    Not as long, but most people don't know what a mutex is, let alone 
an abbreviation of it.

>    <mutuallyExclusiveblockContainer>

    Ah, that answers that question.

>    <mxsection>
>    <mxsections>

    Cool names, but people won't know what they are.

>    <page>
>    <pages>

    I actually kinda like the page metaphor. I presume there is a reason 
you rejected this? (Other than the obvious fact that the idea of pages 
within pages of an HTML document is a little strange.)

>    <stack>

    XUL has a <stack> element, while the function of what we're trying 
to create here is much more like XUL's <deck>.

>    <stateset>

    Just because you only see one section at a time doesn't mean they're 
states, so this name strikes me as slightly misleading.

>    <tab>
>    <tabs>

    I'm thinking that there should be separate markup for the mutually 
exclusive sections and the means of accessing the pages. That said, I do 
think there should be markup for the means of accessing pages, like my 
<tabstrip> example.

>    <widget>

    ???

>    <wizard>

    See comments on <tabs>.

> The second choice after <switch> is currently <stateset>, but both
> seem a bit geeky.

    Perhaps we should use <deck> and <card> together, like this:

<tabstrip>
   <tabs>
     <tab for="section1"><a href="#section1">Section 1</a></tab>
     <tab for="section2"><a href="#section1">Section 2</a></tab>
     <tab for="section3"><a href="#section1">Section 3</a></tab>
   </tabs>
   <deck>
     <card id="section1"> ...Stuff for Section 1... </card>
     <card id="section2"> ...Stuff for Section 2... </card>
     <card id="section3"> ...Stuff for Section 3... </card>
   </deck>
</tabstrip>

    Any link (within the deck?) that references a card's |id| will bring 
that card to the front when clicked, allowing easy creation of wizards:

<form>
   <deck>
     <card id="section1">
       ...Stuff for Section 1...
       <a href="#section2">Next</a>
     </card>
     <card id="section2">
       ...Stuff for Section 2...
       <a href="#section1">Previous</a>
       <a href="#section3">Next</a>
     </card>
     <card id="section3">
       ...Stuff for Section 3...
       <a href="#section2">Previous</a>
       <button type="submit">Finish</button>
     </card>
   </deck>
</form>



More information about the whatwg mailing list