[whatwg] Combo Boxs, once again...

Ian Hickson ian at hixie.ch
Tue Jul 6 06:27:53 PDT 2004


On Thu, 1 Jul 2004, Matthew Raymond wrote:
>
> Here are seven different ways to do combo boxes with their pros and
> cons. I recommend prefer the last one. Let me know if I made any typos
> or omitted obvious pros or cons.
>
> === Sample #1 ===
>
> Cons:
>     Degrades to a drop-down, which is a serious problem.

So serious that solutions to this effect were removed from the draft.
Twice. :-)


> === Sample #2 ===
>
> <ignore>
>    <input type="text" name="combo1" value="something" />
>    <label for="select1"> or select from this list: </label>
> </ignore>
> <select editable name="combo1" type="text" value="something" id="select1">
>    <option>First Option</option>
>    <option>Second Option</option>
>    <option>Third Option</option>
> </select>
>
> Cons:
>     Many oppose extending the use of the "type" attribute.
>     Legacy UAs submit multiple values to the server.
>     Introduces a new element that did not previously exist.

Specifically, introduces a new element whose semantics are purely version
control, which I really don't like.

Also, this method makes it impossible to associate a label with the input
in the legacy case and the select in the WF2 case.


> === Sample #3 ===
...and
> === Sample #5 ===
>
> Cons:
>     Abuses repetition templates.

I really don't like that.


> === Sample #4 ===
>
> <input type="text" name="combo1" value="something" list="select1" />
> <ignore>
>    <label for="select1"> or select from this list: </label>
>    <select name="combo1" id="select1">
>      <option>First Option</option>
>      <option>Second Option</option>
>      <option>Third Option</option>
>    </select>
> </ignore>
>
> Cons:
>     Legacy UAs submit multiple values to the server.
>     Introduces a new element that did not previously exist.
>     <ignore> element required even in WF2-only cases.

This is closer to ideal, although it still has this version-control-only
element, except in this case it is even worse because it doesn't really
mean ignore, it means "ignore only for rendering". It's basically as bad
as <center> at this point. :-)


> === Sample #6 ===
>
> WF2 + LEGACY:
>
> <input type="text" name="combo1" value="something" list="list1" />
> <datalist id="list1">
>    <label for="select1"> or select from this list: </label>
>    <select name="combo1" id="select1">
>      <option>First Option</option>
>      <option>Second Option</option>
>      <option>Third Option</option>
>    </select>
> </datalist>
>
> Cons:
>     Requires abuse of markup for graceful degradation.

I'm not sure why you think this is an abuse. <datalist>'s semantics are
"here is a list of options, or, if you don't know how to handle those, an
alternate representation of the form for you".


> === Sample #7 ===

...has the same problem with <ignore> as #4, and is otherwise equivalent
to #6.

I picked #6.

-- 
Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'



More information about the whatwg mailing list