以下代码来自HTML表单。如果输入应该是整数,我是否需要更改“类型”?
<div class="friend2title">
<label for="url">Add points:</label>
</div>
<div class="friend2field">
<input name="state" type="text" id="state" maxlength="150">
</div>
答案 0 :(得分:32)
<input type="number" step="1" ...
通过添加step
属性,可以将输入限制为整数。
当然,您也应该始终在服务器上进行验证。除了在严格控制的条件下,从客户收到的所有东西都需要被视为可疑。
答案 1 :(得分:22)
如果您使用的是HTML5,则应使用输入类型number
。如果您使用的是xhtml或html 4,则输入类型应为text
。
答案 2 :(得分:16)
这可能会有所帮助:
<input type="number" step="1" pattern="\d+" />
step
是为了方便(可以设置为另一个整数),但是pattern
执行了一些实际操作。
请注意,由于pattern
与整个表达式匹配,因此无需将其表示为^\d+$
。
即使使用这种外观紧凑的正则表达式,Chrome和Firefox的实现,有趣地允许e
在这里(可能用于科学记数法)以及-
用于负数,Chrome也允许.
1}}而Firefox拒绝更严格,除非.
后面只有0。 (Firefox在输入失去焦点时将该字段标记为红色,而Chrome不允许您首先输入不允许的值。)
因为,正如其他人所观察到的那样,应始终在服务器上(或在客户端上验证,如果在客户端本地使用该值或希望防止用户往服务器的往返)。
答案 3 :(得分:3)
在HTML5之前,输入类型=“文字”仅表示插入自由文字的字段,无论您想要什么。这是您必须要做的验证工作,以保证用户输入有效的数字
如果您使用的是HTML5,则可以使用新的输入类型,其中一种是数字,可以自动验证文本输入,并强制它为数字
请记住,如果您正在构建一个服务器端应用程序(例如php),您仍然需要验证该方面的输入(确保它确实是一个数字),因为它很容易破解html并更改输入类型,删除浏览器验证
答案 4 :(得分:0)
不,它与输入的数据类型无关。它指定type of control to create:
type = text | password | checkbox | radio | submit | reset | file | hidden | image | button [CI] 此属性指定要创建的控件的类型。此属性的默认值为“text”。
答案 5 :(得分:0)
您应该将您的类型更改为数字 如果您首先接受小数并在keyUp上将其删除,则可以解决此问题...
$("#state").on('keyup', function(){
$(this).val($(this).val().replace(".", ''));
})
或
$("#state").on('keyup', function(){
$(this).val(parseInt($(this).val()));
})
这将删除句点,但是没有“整数类型”。
答案 6 :(得分:-8)
即使您想接受输入数字,我也建议您使用text
类型。
<input type="text" name"some-number" />
客户端运行一些jQuery验证来验证它是一个数字。
然后在您的服务器端代码中,运行一些验证以验证它实际上是一个数值。