According to html5.org, the "number" input type's "value attribute, if specified and not empty, must have a value that is a valid floating point number."
Yet it is simply (in the latest version of Chrome, anyway), an "updown" control with integers, not floats:
<input type="number" id="totalAmt"></input>
Is there a floating point input element native to HTML5, or a way to make the number input type work with floats, not ints? Or must I resort to a jQuery UI plugin?
Best Answer
The
number
type has astep
value controlling which numbers are valid (along withmax
andmin
), which defaults to1
. This value is also used by implementations for the stepper buttons (i.e. pressing up increases bystep
).Simply change this value to whatever is appropriate. For money, two decimal places are probably expected:
(I'd also set
min=0
if it can only be positive)If you'd prefer to allow any number of decimal places, you can use
step="any"
(though for currencies, I'd recommend sticking to0.01
). In Chrome & Firefox, the stepper buttons will increment / decrement by 1 when usingany
. (thanks to Michal Stefanow's answer for pointing outany
, and see the relevant spec here)Here's a playground showing how various steps affect various input types:
As usual, I'll add a quick note: remember that client-side validation is just a convenience to the user. You must also validate on the server-side!