2012-05-25 3 views
23

私は次のマークアップがあります:Google Chromeの(そしておそらく他のWebKitブラウザ)でChrome/HTML5:入力タイプ番号が最大属性を満たしていませんか?

<input type="number" max="99" /> 

を、これは99の上に行くから矢印スピナーのアップが制限されますが、それはを入力してからユーザーを防ぐことはできません。 onblurであっても、無効な値は削除/置換されず、値が無効であるという警告さえありません。

私はそれが動作する方法を誤解していますか、これはバグですか?私は最新バージョンのChromeを使用しています(執筆時点では19)。

編集:

を明確にするために、私は指定されたmaxより大きい数が最初の場所で入力することが許可されている理由を知りたいです。私はそれが無効であることを伝えるフォーム提出のツールチップを提供することを認識していますが、スピナーがあなたが最大値を上回ることを許さない矛盾した振る舞いのようですが、それ。

これが何らかの理由で望ましい動作であれば、それはなぜですか?そして、JSに頼らずに入力範囲を強制するより良い選択肢がありますか?あなたのコードに送信ボタンとフォームを置けば

+0

作品罰金が、私はエラーメッセージ「の値が99以下でなければなりません」を取得します。あなたの実際のコードをご覧になれますか? –

+0

http://jsfiddle.net/j08691/Uv3EA/ – j08691

+0

フォームの送信時にのみ表示されるのはなぜですか?さらに重要なのは、最初はなぜ許可されているのでしょうか?それはスピナーを制限して、それを使ってより高い価値を入力することはできません。なぜ手動入力でもないのですか?また、maxlengthやpatternを使用して制限することはできません。数値型入力には適用されないためです。私はJSのkludgeを書いて立ち往生している... – FtDRbwLXw6

答えて

8

それは仕事をしていますが、唯一のエラーメッセージ(ツールチップ)を参照してください。

<form action="#" method="get"> 
    <input type="number" max="99" /> 
    <input type="submit" value="Submit!" /> 
</form> 

jsFiddle

+4

ありがとうございますが、エラーメッセージのみが表示されます。私は、最初の場所でmaxより大きい値を入力できるようにする理由をもっと心配しています。スピナーコントロールは最大値を上回らせることはできません。だから、なぜあなたは数字を大きくすることができますか?私に見落としやバグのように思える。 – FtDRbwLXw6

+1

明らかにこれをバグと分類するのに同意しない力。 – FtDRbwLXw6

+8

これはまったくバグです。彼らの監督を再確認してください:c – Vix

1

それは古い質問ですが、私はどこでもこの質問に関連する回答は見つかりませんでした。 この動作はchrome(バージョン61)のままです。

私はいくつかの状況で使用できる小さなトリックを発見しました。 aureliaangularなどのようなデータバインディングライブラリを使用する人には関係します。私はオウレリアでのみテストしましたが、それは他の人にも有効です。

このトリックは、タイプrangeの入力がmin/maxという制約を適用するという事実に依存しています。

通常の入力と同じ値にバインドされた別の入力(タイプrange)を作成するだけで、cssで非表示にします。

ユーザがmaxの値より大きい値を入力すると、値はmaxに戻って戻ります。

はここアウレリアでデモです:私のためにhttps://gist.run/?id=86fc278d3837718be4691acd5625aaad

関連する問題