我正在使用jQuery Tools Validator,它通过jQuery实现HTML5验证 . 它必须回退到"pattern"验证,因此松散了额外的功能,例如支持它的浏览器的向上和向下箭头 . 是否有另一个输入类型或可能将输入限制为无符号整数的属性?我找不到任何,谢谢 .
EDIT
好的,我感谢您的时间和帮助,但我看到许多不值得的投票:D . 将步骤设置为1不是答案,因为它不限制输入 . 您仍然可以在文本框中键入负浮点数 . 另外,我知道模式验证(我在原帖中提到过),但这不是问题的一部分 . 我想知道HTML5是否允许将“number”类型的输入限制为正整数值 . 对于这个问题,似乎答案是“不,不是” . 我不想使用模式验证,因为这在使用jQuery Tools验证时会产生一些缺点,但现在似乎规范不允许更简洁的方法来执行此操作 .
20 回答
这不仅适用于html5,所有浏览器都能正常工作 . 试试这个
模式很好但是如果你想仅使用type =“text”将输入限制为数字,你可以使用oninput和一个正则表达式,如下所示:
我跟我说话:)
模式始终优于限制,尝试
oninput
和min
出现1仅用于输入从1开始的数字你试过像这样将
step
属性设置为1吗?将
step
属性设置为1
:这在Chrome中似乎有点儿错误,所以它可能不是目前最好的解决方案 .
更好的解决方案是使用
pattern
属性,该属性使用正则表达式来匹配输入:\d
是数字的正则表达式,*
表示它接受多个数字 . 这是演示:http://jsfiddle.net/b8NrE/1/使用JavaScript的简单方法:
使用此代码,文本字段的输入限制为仅输入数字....模式是HTML5中可用的新属性
Patter attribute doc
https://www.w3.org/wiki/HTML/Elements/input/number
只有HTML才能达到最佳效果
是的,HTML5可以 . 试试这段代码(w3school):
查看最小和最大参数?我尝试使用Chrome 19(有效)和Firefox 12(无效) .
虽然我使用html属性,但我正在使用Chrome并遇到一些问题 . 我最终得到了这个js代码
设置
step="any"
. 工作良好 . 参考:http://blog.isotoma.com/2012/03/html5-input-typenumber-and-decimalsfloats-in-chrome/只需将其放在输入字段中:
onkeypress='return event.charCode >= 48 && event.charCode <= 57'
From the specs
所以你可以简单地将它设置为
1
:将
step
属性设置为任何浮点数,例如0.01,你很高兴 .也许它不适合每个用例,但是
可以做得很好:fiddle .
检查documentation .
目前,无法阻止用户仅使用HTML在输入中写入十进制值 . 你必须使用JavaScript .
顺便说一句,似乎如果你在“数字”输入中有一个数字而不是数字,val()等返回'' . 我只是检查一下,它似乎适用于我需要的东西(限制字母和其他字符) .
使用前导零,小数点等 .
在Future™(请参阅Can I Use)中,对于向您显示键盘的用户代理,您可以使用
input[inputmode]
将文本输入限制为仅数字 .