我正在使用jQuery工具验证器,它通过jQuery实现HTML5验证。

到目前为止一切都很顺利,除了一件事。在HTML5规范中,输入类型“number”既可以是整数也可以是浮点数。

这似乎是非常短视的,因为它只在数据库字段是带符号的浮点数时才有用(对于无符号整数,您将不得不退回到模式验证,从而失去支持它的浏览器的上下箭头等额外功能)。

是否有另一种输入类型或属性将输入限制为无符号整数?

我一个也找不到。


将步长设置为1并不是答案,因为它不限制输入。您仍然可以在文本框中键入一个负浮点数。

此外,我知道模式验证(我在最初的文章中提到过),但这不是问题的一部分。

我想知道HTML5是否允许将“数字”类型的输入限制为正整数值。对于这个问题,答案似乎是“不,没有关系”。

我不想使用模式验证,因为这会在使用jQuery工具验证时造成一些缺陷,但现在看来,规范不允许使用更清晰的方式来实现这一点。


当前回答

最短的

这是R. Yaghoobi答案的尺寸改进

<input type=“number” oninput=“this.value|=0”/>

这里我们使用标准的“或”运算符简写,例如二进制9 | 2 = 11:0b1001 | 0b1010 = 0b1011。该运算符首先以隐式方式将数字转换为整数,然后执行或运算。但因为OR带0不会改变任何东西,所以number被转换为整数。非数字字符串的OR值为0。

其他回答

模式总是可取的限制,尝试oninput和最小值发生1只输入数字从1起

<input type="text" min="1" oninput="this.value=this.value.replace(/[^0-9]/g,'');"
                                value=${var} >

是的,HTML5可以。试试下面的代码(w3school):

<!DOCTYPE html>
<html>
<body>

<form action="">
  Quantity (between 1 and 5): <input type="number" name="quantity" min="1" max="5" />
  <input type="submit" />
</form>

</body>
</html>

看到最小和最大参数了吗?我用Chrome 19(正常)和Firefox 12(不正常)试了试。

将step属性设置为任何浮点数,例如0.01,就可以了。

仅使用HTML(文档)可以达到的最好效果是:

<输入类型=“数字” 最小=“0” 步数=“1”/>

<input type="text" name="PhoneNumber" pattern="[0-9]{10}" title="Phone number">

使用这段代码,文本字段的输入限制为只能输入数字。Pattern是HTML 5中的新属性。

模式属性文档