The upcoming standard for HTML 5 defines new input types. These are
currently only relevant for mobile applications, but new versions of
firefox, Opera and webkit enabled browsers will provide support for
these types as well.

Until now HTML provided the following input types:
 - checkbox
 - radio
 - password
 - text
 - select
 - submit
 - file

HTML 5 supports a couple more:
 - email
 - url
 - number (possibly with spinbox)
 - range
 - date, month, week, time, datetime, datetime-local
 - search
 - color

Text fields also support new attributes for min, max, step, autofocus,
placeholder and more. They also support in-browser client side
validations: min/max/email/url and required. Forms can be told not to
be validated with novalidate.

Anyway one can write a whole book about HTML 5 (and Mark Pilgrim is
doing so, http://diveintohtml5.org).

I'd like to discuss how to integrate this new web into wicket. Several
ways are possible:

 - drop the type="foo" check from textfield and cousins
 - drop the type="foo" check from textfield and cousins and add markup
validation based upon HTML validator to our dev utils
 - expand the type="foo" check to allow more values for text
 - expand the type="foo" check only in HTML 5 mode (check the page
markup and detect if it has doctype <!DOCTYPE html>)
 - expand the type="foo" check only in HTML 5 mode, and validate the
value with the corresponding field type (i.e. Integer ->
type="number")
 - create specialized fields that check for the only correct type,
i.e. NumberField, EmailField, and include the specialized attributes
(min, max...)

 - add support for autofocus and placeholder into wicket's textfield
(regardless of HTML version)
 - or only for the special HTML 5 fields

Basically there are two ways to look at this: enabling new markup for
everybody which is compatible with all browsers (input type="number"
falls back to input type="text"), but will fail strict validation for
non-html5 markup when used.

In my opinion we should remove the specific checks and rely on markup
validation based on HTML validator which we should include as a
devutils package (we should add devutils too in the quickstart).
Furthermore we should add support for the specific attributes on
textfield and form for autofocus, placeholder, min, max, pattern, ...
and mark them as HTML 5 only in the javadoc.

Now about validation... when doing:

    textfield.setMin(18);

We should add NumberValidator.min(18) to the field as well. If
possible I would do it the other way round too:

    textfield.add(NumberValidator.min(18)); // adds the min attribute
to the tag...

This would also work for PatternValidator. In order to keep folks
working on HTML 4.01 or XHTML 1.0/1.1 happy, we should make this
conditional on the markup settings (supportsHtml5TagsAndAttributes()).

Martijn

Reply via email to