- From: Ms2ger <ms2ger@gmail.com>
- Date: Fri, 10 Feb 2012 11:49:43 +0100
Hi Brenton, On 02/10/2012 11:39 AM, brenton strine wrote: > Regarding the an input with type in the "number" state, the spec states > that the "pattern" attribute "must not be specified and do[es] not > apply<http://dev.w3.org/html5/spec/common-input-element-attributes.html#do-not-apply> > to > the element". ( > http://dev.w3.org/html5/spec/states-of-the-type-attribute.html#number-state-type-number > ) > > Why is it specifically blocked? Doesn't that encourage the use of a less > semantic "text" input type for numbers that need to be validated beyond > simple max and min? > > What if you want the number to be either 13 or 16 digits long, as with a > credit card > > pattern="(\d{5}([\-]\d{4})?)" > > or you want a US ZIP or ZP4 code which can either be nnnnn or nnnnn-nnnn > > pattern="(\d{5}([\-]\d{4})?)" > > To get the pattern to validate, I have to (non-semantically) change the > input to the text state? I much prefer the current behavior of Firefox > (tested 9 and 10) which does validate the pattern. Using input type=number for those cases is wrong. You would not use a credit card number or a ZIP code in calculations. (In fact, in the United Kingdom, post codes contain letters.) input type=number is meant to be used for numbers, rather than for strings that happen to contain mostly numbers. The specification does indeed require a *more* semantically correct input type=text for those cases. The reason that Firefox validates the pattern is that it currently does not implement input type=number (patches welcome). Instead, it implements the fallback behaviour defined in the specification, i.e., treat unknown 'type' values as 'text'?which causes the pattern attribute to apply. Using input type=number pattern=... will break as soon as Firefox correctly implements the feature. HTH Ms2ger
Received on Friday, 10 February 2012 02:49:43 UTC