Chrome の以下のコードは、「00.00」のパターンを強制するものではなく、小数点以下の桁数に制限のない任意の形式の数値を許可しています。入力タイプ「テキスト」を使用する場合、このパターンは正常に機能するため、これが「数値」の問題であるかどうかはわかりません。
ご提案があれば歓迎します。
<input type="number" step="1.00" min="0" pattern="\d+(\.\d{2})?" class="form-control" id="JobCost" name="jobcost">
ベストアンサー1
これはかなり古い質問ですが、私も同じことを理解しようとしていて、これが私が判断できたことです。
初め、型の入力では属性number
は使用されないpattern
ため、無視されます。
2番属性は、step
上下クリッカーのステップだけでなく、有効な値のセットも決定します。たとえば、ステップを1.11に設定した場合、有効な値は1.11、2.22、3.33などです。5.2を入力して送信すると、次のように応答します。「有効な値を入力してください。最も近い 2 つの有効な値は 4.44 と 5.55 です。」ステップを入力しない場合は、デフォルトで 1 になります。その場合、「整数」のみが許可されます (技術的には1.
または1.0
や1.00
などが許可されるため、引用符を使用します)。任意の数値を使用するstep="any"
場合は を使用します。Chrome ではデフォルトのステップ 1 が強制されますが、Firefox では小数が許可される (任意の値として扱う) とどこかで読みました。
三番目ただし、タグ内に埋め込まれていない場合は、何も機能しませんform
。
したがって、数値を小数点以下 2 桁に強制する場合は、 を使用するかtype="number" step=".01"
(アップ/ダウン クリッカーによって .01 ずつ増減することを理解した上で)、 を使用します。 正規表現ではがあるためtype="text" pattern="\d+(\.\d{2})?"
、 は許可されないことに注意してください。ただし、許可されます。 先頭に 0 を付けずに小数点を許可する場合は、代わりに を使用します。 また、小数点以下 2 桁のみ、または小数点なし ( と は拒否しますが、は受け入れます)も許可されます。 それが目的であれば、素晴らしいことです。念のため確認したかったのです。.23
\d+
0.23
\d+(\.\d{2})?
1.
1.2
1.20
\d*(\.\d{0,2})?
小数点以下 2 桁までの数値は受け入れますが、それ以上は受け入れません。ただし.
、小数点以下 2 桁も受け入れるので、必要な数値に応じていろいろ試してみる必要があります。