HTML 5 type='number'says the field expects only numbers and modern browsers to allow only numerical inputs.
<input type='number' value='123' />
EDIT:
Let me change a little, because judging by the comments, the original answer is a bit shallow for most.
Basically, you have three options: type='number', type='range'and type='tel'. None of them are designed to work. The result depends on the browser and keyboard.
For example, my Android Opera Mobile does not request a numeric keypad, but it adds a spinbox to the field number, just like the desktop version. A spinbox that works with step='0.1', but is not suitable for use in mobile applications with the current implementation.
Android Firefox 5, number - , , , tel! ! ABC DEF GHI 1 2 3, .
type='tel' HTML5 (), . ( 2013-08: tel HTML5! ...)
range, , . , , iPhone Safari , . , .
, . HTML 5. ; , , .