html5 number inputで数字以外が入力できてしまう

HTML5になって、input要素にtype=”number”というのが指定できるようになる事になっていて。現行でも対応済みっぽい挙動を示すブラウザがいくつかあるんだけど、なんだか納得のいかない挙動。

↑100の後ろで、「a」とか押してみて?

opera.png←Opera9.8で試した結果
number inputというからには、数字以外を押しても無視される事を期待していたのだけれど、現に「a」って押したら「100a」になってしまう。

実験用HTMLファイル
test.html

上記で試した挙動は以下の通り。

  • Opera9.80:数字以外も入力できる。ただし、submitした時、数字以外が含まれていると、valueが空文字に置き換えられる。
  • Chrome4.1.249.1045:数字以外も入力できる。POSTもできてしまう。
  • FireFox3.6.2:数字以外も入力できる。POSTもできてしまう。
  • Safari4.0.5:数字以外も入力できる。POSTもできてしまう。

自分がなんか勘違いしてたりするかなぁ?

仕様見ると、「User agents must not allow the user to set the value to a string that is not a valid floating point number. (ユーザーエージェントは、ユーザーが妥当な浮動小数点数でない文字列をその値にセットできるようにしてはいけません。)」って書いてあるんだけど・・・