[whatwg] [WF3] The <altinput> Element

Matthew Raymond mattraymond at earthlink.net
Sat Aug 27 22:00:33 PDT 2005


   The <altinput> element is intended to be a possible alternative to my
earlier <dataentry> element.

   The <altinput> element is a way of accomplishing the same goals as
<dataentry> while ensuring that the size of a form's elements collection
and the position of controls within it doesn't change between legacy and
WF2 browsers. Rather than the element itself being a form control,
<altinput> instead performs the following:

 * If it has a control with an |id| attribute equal to its |for|
   attribute, then it attempts to assign its own |type| attribute value
   to the |type| of the specified control.

 * If the |type| is not supported, then the <altinput> acts as nothing
   more than a <span>.

 * However, if the |type| is supported, the control has its |type|
   changed and the entire contents of the <altinput> element, with the
   exception of specified control, are not be rendered.

   The result is that, in most cases, <altinput> acts almost exactly
like <dataentry>.

*** Examples ***

Here's a simple example for the three <select> scenario:

| <altinput for="d1" type="date" value="2005-02-09">
|   <input type="hidden" id="d1" name="d1" />
|   <select name="d1_day"><!-- Options --></select> /
|   <select name="d1_month"><!-- Options --></select> /
|   <select name="d1_year"><!-- Options --></select>
| </altinput>

Here's an example for users of jscalendar:

| <altinput for="sel1" type="date">
|   <input type="text" id="sel1" name="date1" size="30" />
|   <input type="reset" value=" ... "
|   onclick="return showCalendar('sel1', '%Y-%m-%d');">
|   YYYY-MM-DD
| </altinput>

*** Pros ***

   1. The size of a form's elements collection in Javascript never
      changes.

   2. The <altinput> element can allow for a far greater range of legacy
      fallback than <input> alone.

   3. Because the |type| is defined in an attribute, <altinput> can be
      used for input types in later specifications, or for
      vendor-specific input types.

   4. Because the element requires a child form control, it encourages
      the use of <input> alone in simple cases where legacy fallback
      needs are minimal.

   5. The element is designed only to prevent the presentation of its
      child elements. It does not require user agents to delete contents
      from the DOM or suppress Javascript execution.

*** Cons ***

   1. It's slightly more complicated to use than <dataentry>.

   2. In some situations, you must use a hidden <input> control as the
      target of the <altinput> element's |for| attribute.

   3. It may still inherit some minor issues from <dataentry>.



More information about the whatwg mailing list