HTML5から

```
input type="number"
```

ってのもあります。スマートフォンとかではデフォルトで数字入力のIFになるのでそっちのほうが好ましい気がします。