- From: Markus Ernst <derernst@gmx.ch>
- Date: Wed, 20 Feb 2008 19:11:37 +0100
Hello I googled, read the list archive and whatwg forum and did not find anything about this topic; if it should have been discussed before, I apologize. Reading the Webforms 2.0 drafts I found that many useful extensions are made, but the basic control structure remains untouched. IMO there is a great amount of inconsistency in there, as the existing controls seem to be inspired by their on-screen representations rather than by their functionalities: Input element: - Single line text field - Hidden text field - Specialized text field (password, new extensions) - Unique list selection (radio button group) - Multiple list selection (checkbox group) - Confirmation / "yes or no" (single checkbox) - File upload - Action initiation (button) Textarea element: - Multiline text field Select element: - Unique list selection - Multiple list selection Button element: - Action initiation So we have controls with similar functionalities but totally different syntax, and also controls with similar syntax but totally different meanings / functionalities. A trivial task, as for example changing the representation of a list selection from a radio button group into a select box, needs a non-trivial amount of coding - specially if it should be done at runtime by a script. I suggest to change the point-of-view for future HTML versions. A consistent structure could look somehow like the following: 1. Input element User input functionality Changes: - input type="text" defaults to a single line text field (unchanged) - for a multiline text field, either a "multiline" attribute or a new "textarea" type is introduced - also, a rich text editor could be introduced, either by a "richtext" attribute or a new "richtext" type (of course this would introduce new questions, such as, how to configure its toolbars...) - hidden, file, password, and new specialized types remain unchanged - checkbox, radio, submit, reset, button, and image types get deprecated - the textarea element gets deprecated Examples: - single line text field (unchanged) <input type="text" name="foo" value="bar"> - multi line text field <input type="text" name="foo" value="bar" multiline> or <input type="textarea" name="foo" value="bar"> - rich text editor <input type="text" name="foo" value="bar" richtext> or <input type="richtext" name="foo" value="bar"> - special fields (unchanged) <input type="[hidden|password|date|...]" name="foo" value="bar"> 2. Select element List selection functionality Changes: - introduce type attribute to determine appearance: type="menu" (default): display as today's select element type="boxes": display as group of check or radio boxes - for type="boxes", the "multiple" attribute switches from radio button to checkbox appearance - the current option syntax gets deprecated; the label will be added with the label tag rather than be included in the option tag Examples: - default selectbox, as we know it <select name="foo"> <option id="foo1" value="bar1"><label for="foo1">Bar 1</label> <option id="foo2" value="bar2"><label for="foo2">Bar 2</label> <option id="foo3" value="bar3"><label for="foo3">Bar 3</label> </select> - multiple choice selectbox, as we know it <select name="foo" size="5" multiple> <option id="foo1" value="bar1"><label for="foo1">Bar 1</label> <option id="foo2" value="bar2"><label for="foo2">Bar 2</label> <option id="foo3" value="bar3"><label for="foo3">Bar 3</label> </select> - radio button group <select name="foo" type="boxes"> <option id="foo1" value="bar1"><label for="foo1">Bar 1</label> <option id="foo2" value="bar2"><label for="foo2">Bar 2</label> <option id="foo3" value="bar3"><label for="foo3">Bar 3</label> </select> - checkbox group <select name="foo" type="boxes" multiple> <option id="foo1" value="bar1"><label for="foo1">Bar 1</label> <option id="foo2" value="bar2"><label for="foo2">Bar 2</label> <option id="foo3" value="bar3"><label for="foo3">Bar 3</label> </select> 3. Checkbox element (new) Confirmation resp. "Yes or no" functionality Changes against input type="checkbox": - the "checkbox" element gets no value attribute; the submitted value is "1" when checked, "0" when not checked (this is actually the main reason for introducing a new element - changing input type="checkbox" in this manner would cause severe backwards compatibility problems in many applications; one more reason for the new element is the problem of styling the input element, where i.e. borders or dimensions usually do not apply to checkboxes but only to text fields) Example: <checkbox id="chk1" name="confirm"> <label for="chk1">I have read and understood the general conditions</label> 4. Button element Action initiation functionality Changes: - button type="image" is introduced in order to totally replace all button functionalities of the input element I assume that this is possible without breaking backwards compatibility. At least, new browsers will be able to interpret HTML4 syntax. Old browsers will not be able to interpret all of my suggestions, but AFAICS this is the case also with other new parts of HTML5. -- Markus Ernst
Received on Wednesday, 20 February 2008 10:11:37 UTC