Proposal for stacked SELECTs (SELECTs in SELECTs in FORMs)
Fri, 31 Mar 1995 04:48:45 +0500


The present Menu/ListBox structure (in HTML3.0 draft) is restrictive,
as it only allows one layer of menus.

It would be much more useful to allow other SELECTs inside a Menu.
This would give the cascade menu effect seen on most platforms.

I have two ideas for the syntax:

<SELECT NAME="flavour">
<SELECT NAME="chocolate level">
<OPTION>Rum & Raisin

OR (Better IMHO)

<SELECT NAME="flavour">
<OPTION SELECT NAME="chocolate level">Chocolate <OPTION OPTION>Single
<OPTION>Rum & Raisin

This second syntax is less prone to be taken as a syntax error by
older browsers, and rendered anyway.

Both of these, when activated, would give a structure of:

|Vanilla |
|Strawberry |
|Chocolate >|--------
|Rum & Raisin |Single |
|_____________|Double |
|Triple |

Of which, when un-activated, with a choice pointing to a sub-menu is
selected, just the box containing:

|Chocolate > |

Would be visible.

This would make the selection of items within forms much more
flexible, as less on-screen real-estate is required.

The second syntax has the advantage that it would enable a browser to
render the menu more easily even it was not capable of rendering
popupmenus, or the SIZE attribute is >1.

This implies that the browser could render the items in a list-box
format, with the second choice appended to the end of the first
column, resulting a row format shown for the same example here:

|Vanilla |^|
|Strawberry | |
|Chocolate > Single | |
|Chocolate > Double | |
|Chocolate > Triple | |
|Rum & Raisin | |

The browser would then be responsible for sending the correct response
from the selected item, by setting the "flavour" and "chocolate level"
return variables appropriately.

The program interpreting the results would then have to look first at
the "flavour" variable, then at the "chocolate level" if appropriate.

It is possible that this may be considered too incompatible with the
previous versions of the HTML standard, so then a new keyword would be
needed to specify a Popupmenu-only tag that can have child menus, that
can only be used for SIZE=1 rendering.

Tom Tobin
QA Engineer, BusinessObjects