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

Is there a float input type in HTML5?

根据html5.org,"number"输入类型的"value"属性,如果指定且不为空,则必须具有有效的浮点数。

然而,它只是(无论如何,在最新版本的chrome中)一个带有整数的"updown"控件,而不是浮动的:

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

有没有一个HTML5自带的浮点输入元素,或者一种让数字输入类型使用浮点数而不是整数的方法?还是必须使用jquery用户界面插件?


number类型有一个step值,控制哪些数字有效(与maxmin一起使用),默认为1。该值也可用于步进器按钮的实现(即,按向上增加step)。

只需将该值更改为适当的值。对于货币,可能需要两位小数:

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

(如果只能是肯定的话,我也会设置min=0)

如果您愿意允许任何小数位数,您可以使用step="any"(不过对于货币,我建议使用0.01)。在chrome&firefox中,使用any时,步进器按钮将增加/减少1。(感谢Michal Stefanow的回答,他指出了any,请参阅此处的相关规范)

以下是一个游乐场,展示了各种步骤如何影响各种输入类型:

1
2
3
4
5
6
7
8
9
10
11
12
13
<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/

But what if you want all the numbers to be valid, integers and decimals alike? In this case, set step to"any"

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

在Chrome中对我有效,而不是在其他浏览器中测试。


你可以使用:

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

希望能帮忙,问候


基于这个答案

1
2
3
<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

&&AND||OR运算符。

如果尝试用逗号浮动:

1
2
3
<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)(其他浏览器我不存在。)


可以使用输入类型编号的step属性:

1
<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;…


我这样做

1
 <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…零点七


我也遇到了同样的问题,我可以通过在数字中加逗号而不是句号/句号来解决,因为法语本地化了。

因此,它适用于:

2可以

2,5可以

2.5是ko(该数字被视为"非法",您将收到空值)。