[4]
[[HTML]] の [CODE(HTMLe)@en[[[input]]]]
[[要素]]の [CODE(HTMLa)@en[[[type]]]] [[属性]]を
[DFN@en[[CODE(HTML)[[[number]]]]]] とすると、
[[数値]]を指定する[[フォーム制御子]]となります。
@@ [1] 本稿は新しい [[HTML5]] の規定をまだ反映していません。
[5] 仕様書:
- [DEL[[[Web Forms 2.0]]]] (廃止)
-- [CSECTION@en[2.4. Extensions to the [CODE(HTMLe)@en[[[input]]]] element]]
- [[HTML5]]
[[#comment]]
** 値の構文
[6]
[[フォーム提出]]時に用いられる値は、
次のような構文とし[['''なければなりません''']]。
- [[仮数部]]
-- [CODE(HTML)[[[-]]]] (省略可能)
-- 1つの[[整数]]
-- 省略可能:
--- [CODE(HTML)[[[.]]]]
--- [[小数部]]: 1つの[[整数]]
- [[指数部]] (省略可能、既定値は[[零]])
-- [CODE(HTML)[[[e]]]]
-- [CODE(HTML)[[[-]]]] (省略可能)
-- [[10]]の[[冪乗]]の[[指数]]: 1つの[[整数]]
ここで、[[整数]]は1桁以上の[[十進数字]]です。
これが表す実際の[[数値]]は、
[[仮数]]に[[10]]の[[指数]][[乗]]を掛けたものとなります。
[SRC@en[WF2 2.4]]
[17]
[[利用者エージェント]]は >>6 に適合しない値を[[提出]][['''してはなりません''']]。
[SRC@en[WF2 2.4]]
[[#comment]]
** 値の例
[7] [CODE(HTML example)[-1.4142135623730950488016887242097e0]]
これは、[[2]]の[[負]]の[[平方根]] ([[有効数字]]32[[桁]])
です。
[SRC@en[WF2 2.4]]
[2] [CODE(HTML example)[3.17e4]]
これは、[[地球]]の[[半径]]を[[ハロン]][[単位]]で表したおおよその値です。
[SRC@en[WF2 2.4]]
[3] [CODE(HTML example)[42]],
[CODE(HTML example)[0042.000]],
[CODE(HTML example)[42e0]],
[CODE(HTML example)[4.2e1]],
[CODE(HTML example)[420e-1]]
これらは、いずれも[[生命、宇宙、そして万物についての答え]]です。
[SRC@en[WF2 2.4]]
[14]
'''誤った例''':
[CODE(HTML example invalid code)[+0]],
[CODE(HTML example invalid code)[0e+0]],
[CODE(HTML example invalid code)[+1e+3]]
[CODE(charname)@en[[[PLUS SIGN]]]] を用いることは認められていません。
[SRC@en[WF2 2.4]]
[16]
'''誤った例''':
[CODE(HTML example invalid code)[.42e2]]
[[零]]を省略することは認められていません。
[SRC@en[WF2 2.4]]
[[#comment]]
** 属性との関係
[8]
[CODE(HTMLa)@en[[[step]]]] [[属性]]は精度を表します。
[[既定値]]は [CODE(HTML)[[[1]]]] です。
[SRC@en[WF2 2.4]]
[[#comment]]
** レンダリング
[9]
>>6 の書式は、[[提出]]のためのもので、[[利用者]]が読み書きすることは想定していません。
[[利用者エージェント]]は適切な書式や [[widget]]
を使用[['''して構いません''']]。
[SRC@en[WF2 2.4]]
[[#comment]]
** 互換性
[13] '''未対応利用者エージェントとの互換性'''
[CODE(HTML)@en[[[month]]]] に対応していない[[利用者エージェント]]は、
[CODE(HTML)@en[[[text]]]] (単一行[[文章入力制御子]])
として扱います。従って、[[利用者]]は任意の文字列を入力することができます。
ですから、[[著者]]は、対応している[[利用者エージェント]]が一般的になるまでの間、
[[フォーム制御子]]の近くで記入方法を説明しておくのがよいでしょう。
[[フォーム処理エージェント]]は記入された値が適当か検査するべきです
(これは[[安全性]]の観点からも重要です)。
[[#comment]]
** 歴史
[10]
この [CODE(HTMLe)@en[[[input]]]] [CODE(HTMLa)@en[[[type]]]]
は [[Web Forms 2.0]] で導入されました。
[[#comment]]
** 実装
[11]
[[Opera 9]] が実装しています。
[[#comment]]
** 関連
[12]
似た [CODE(HTMLe)@en[[[input]]]] [CODE(HTMLa)@en[[[type]]]]
として、 [CODE(HTML)@en[[[range]]]] があります。
[15]
>>6 の書式は、 [CODE(C)@en[[[scanf]] (3)]]
の [CODE(C)@en[%[[f]]]]、 [[ECMAScript]] の
[CODE(JS)@en[[[parseFloat]]]]、
その他同様の[[浮動小数点]]の書式と互換になるように設計されています。
[SRC@en[WF2 2.4]]
[[#comment]]
** メモ
[17]
[CODE(HTML)@en[[[number]]]] は、
[[電話番号]]や[[クレジット・カード]]の番号には''不適切''です。
[CODE(HTMLa)@en[[[type]]]] [CODE(HTML)@en[[[text]]]] と適切な
[CODE(HTMLa)@en[[[pattern]]]] を使用するべきです。
[SRC@en[WF2 2.4]]
;; なぜなら、[[電話番号]] [CODE(example)[65000]]
は [CODE(example)[65e3]] や [CODE(example)[6.5e4]]
などとは[[等価]]でないからです。