协慌网

登录 贡献 社区

HTML5 中是否有浮点输入类型?

根据html5.org 的说法 ,“数字” 输入类型的 “值属性,如果指定且不为空,则必须具有一个有效浮点数的值”。

但这只是简单的(无论如何,在最新版本的 Chrome 中),是带有整数而不是浮点数的 “上下” 控件:

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

是否有 HTML5 固有的浮点输入元素,或一种使数字输入类型适用于浮点而不是整数的方法?还是我必须使用 jQuery UI 插件?

答案

number类型具有一个step值,用于控制哪些数字有效(以及maxmin ),默认值为1 。此值也被实现用于步进按钮(即,按step增加)。

只需将此值更改为适当的值即可。为了赚钱,可能期望两位小数:

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

(如果它只能是正数,我还将设置min=0

如果您希望允许任意数量的小数位数,则可以使用step="any" (尽管对于货币,我建议坚持使用0.01 )。在铬和 Firefox,步进按钮将增量 / 减量被 1 时使用any 。 (感谢 Michal 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>


像往常一样,我将简要说明一下:请记住,客户端验证对用户来说只是一种便利。您还必须在服务器端进行验证!

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

但是,如果您希望所有数字都是有效的(整数和小数都一样)怎么办?在这种情况下,将步骤设置为 “任意”

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

在 Chrome 浏览器中对我有效,未经其他浏览器测试。

您可以使用:

<input type="number" step="any" min="0" max="100" value="22.33">