HTML5に浮動小数点入力タイプはありますか?


818

html5.orgによると、「数値」入力タイプの「値属性は、指定されて空でない場合、有効な浮動小数点数である値を持つ必要があります。」

しかし、それは単に(とにかく最新バージョンのChromeでは)、浮動小数点数ではなく整数を使用する「アップダウン」コントロールです。

<input type="number" id="totalAmt"></input>

HTML5にネイティブの浮動小数点入力要素、または数値入力タイプを整数ではなく浮動小数点で動作させる方法はありますか?または、jQuery UIプラグインを使用する必要がありますか?

回答:


1662

number型が有するstep(と共に有効である数値制御値maxmin)、デフォルトは1。この値は、ステッパーボタンの実装でも使用されます(つまり、を押すと増加しますstep)。

この値を適切な値に変更するだけです。お金のために、おそらく小数点以下2桁が予想されます:

<input type="number" step="0.01">

min=0それが肯定的である場合のみ設定します)

小数点以下の桁数を許可したい場合は使用できますstep="any"(ただし、通貨の場合はに固執することをお勧めします0.01)。ChromeとFirefoxでは、使用時にステッパーボタンが1ずつ増減します。anyます。(指摘してミハルStefanowの答えのおかげでany、そしてここでは関係の仕様を参照してください

以下は、さまざまなステップがさまざまな入力タイプにどのように影響するかを示す遊び場です。

<form>
  <input type=number step=1 /> Step 1 (default)<br />
  <input type=number step=0.01 /> Step 0.01<br />
  <input type=number step=any /> Step any<br />
  <input type=range step=20 /> Step 20<br />
  <input type=datetime-local step=60 /> Step 60 (default)<br />
  <input type=datetime-local step=1 /> Step 1<br />
  <input type=datetime-local step=any /> Step any<br />
  <input type=datetime-local step=0.001 /> Step 0.001<br />
  <input type=datetime-local step=3600 /> Step 3600 (1 hour)<br />
  <input type=datetime-local step=86400 /> Step 86400 (1 day)<br />
  <input type=datetime-local step=70 /> Step 70 (1 min, 10 sec)<br />
</form>


いつものように、簡単なメモを追加します。クライアント側の検証はユーザーの便宜にすぎないことを忘れないでください。サーバー側でも検証する必要があります!


1
@Elfayerの編集に応答するには:特定の文字を使用する場合を除き、HTMLでは引用符はオプションです。個人的には、読みやすさを考慮して、可能な限り省略します。
Dave

5
これは最新バージョンのFirefoxでは正しく機能していません:bugzilla.mozilla.org/show_bug.cgi
id

7
@Dave:はい、技術的には、引用符を省略しても問題ありません。これにより、多くの潜在的な問題が発生します。第1に、文字のサブセットは、ブラウザーやバージョンによって処理が異なります。引用符を使用しないことを選択した場合、各ブラウザおよびバージョンで問題を引き起こす文字を常に認識している必要があります。それは、引用符だけを使用する場合、まったく心配する必要がないことに専念する多くの精神力です。(続き)
Chris Pratt

9
第二に、あなたはどの文字が上手で何が上手ではないかのルールについて心配することで大丈夫かもしれませんが、あなたの後ろに来る開発者はおそらくそうではないでしょう。次に、引用符を付けずに残したすべての属性に引用符を追加するという困難な作業に耐えるか、さらに悪いことに、ソースにさえ理解できない可能性がある問題をコードに導入する必要があります。最後に、引用符を使用する必要がある場合があるため、コードは引用符で囲まれた属性と一致しない属性に見えます。
Chris Pratt

2
@relipseこちらをご覧ください:stackoverflow.com/q/3790935/1180785ただし、各回答のコメントを必ずお読みください。すべてのオプションに欠点があるように見えますが、特定のニーズに合ったものを確認する必要があります。
Dave

153

経由:http : //blog.isotoma.com/2012/03/html5-input-typenumber-and-decimalsfloats-in-chrome/

しかし、整数と小数を問わず、すべての数値を有効にしたい場合はどうでしょうか。この場合、stepを「any」に設定します

<input type="number" step="any" />

Chromeで動作しますが、他のブラウザではテストされていません。


4
クローム=>作品完璧なサファリ=>エラーメッセージを表示し、ない場合には、サーバーに渡さないではない数IE =>バージョンが10未満ではない、働く
Abhi

4
残念ながらChromeでは、IPアドレスなど、複数の小数点を入力できます。
アンディ


12

入力タイプ番号にstep属性を使用できます。

<input type="number" id="totalAmt" step="0.1"></input>

step="any"小数を許可します。
step="1"小数は許可されません。
step="0.5"0.5を許可します。1; 1.5; ...
step="0.1"0.1を許可します。0.2; 0.3; 0.4; ...


8

この答えに基づいて

<input type="text" id="sno" placeholder="Only float with dot !"   
   onkeypress="return (event.charCode >= 48 && event.charCode <= 57) ||  
   event.charCode == 46 || event.charCode == 0 ">

意味:

文字コード:

  • 48〜57 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
  • 0はBackspace(そうでなければFirefoxの更新ページが必要です)
  • 46は dot

&&is AND||is OR演算子です。

コンマで浮動小数点を試してみると:

<input type="text" id="sno" placeholder="Only float with comma !"   
     onkeypress="return (event.charCode >= 48 && event.charCode <= 57) ||  
     event.charCode == 44 || event.charCode == 0 ">

サポートされているChromiumおよびFirefox(Linux X64)(私が存在しない他のブラウザー)


後ろ向き。現場でのコピー&ペーストはどうですか?
Mars Robertson


4
入力のハック、コピーと貼り付けのハック、ハックの上にハック=悪い習慣。2017
Mars Robertson

パスワード入力をどこで読み取りますか?誰がセッション後にどの方法を使用するか気にしますか?いいえ、1856です。別のユーザーを試してください!
dsgdfg 2017年

あまりに複雑に
聞こえます

6

そうする

 <input id="relacionac" name="relacionac" type="number" min="0.4" max="0.7" placeholder="0,40-0,70" class="form-control input-md" step="0.01">

次に、ステップ0.01で最小値を0.4で定義し、最大値を0.7で定義します:0.4、0.41、0、42 ... 0.7


4

私は同じ問題を抱えていましたが、フランス語のローカリゼーションのため、数字にピリオド / フルストップではなくカンマを入れるだけで修正できました。

だからそれはで動作します:

2はOKです

2,5はOKです

2.5はKOです(数値は「不正」と見なされ、空の値を受け取ります)。


3
入力または任意の親にlang = "en"を追加すると、英語の数字スタイルが使用されます
user1040495
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.