2011-09-03 77 views
57

Possible Duplicate:
How to allow only numeric (0-9) in HTML inputbox using jQuery?只允许在文本框中输入数字

如何只允许在此文本框中写入数字?

<input type="text" class="textfield" value="" id="extra7" name="extra7"> 
+4

你作为一个数字你认为什么?这些数字是'12.3','-4','V','6'吗? –

+8

不知道如果一个jQuery的问题是重复的。 Javascript!= jQuery – Evert

+4

**这不是所引用问题的完全重复**。这个目标是一个javascript的答案,而另一个目标是一个jQuery的答案。不同的受众,不同的解决方案。 –

回答

180

你可以认购onkeypress事件事件:

<input type="text" class="textfield" value="" id="extra7" name="extra7" onkeypress="return isNumber(event)" /> 

然后定义isNumber功能:

function isNumber(evt) { 
    evt = (evt) ? evt : window.event; 
    var charCode = (evt.which) ? evt.which : evt.keyCode; 
    if (charCode > 31 && (charCode < 48 || charCode > 57)) { 
     return false; 
    } 
    return true; 
} 

你可以看到它在action here

+3

我不知道如何解释你的if语句。如果它大于57,它总是大于31.我认为你可以消除括号。 – pimvdb

+0

谢谢它正在工作。什么是只有字母的字符代码范围?我的意思是我想这样做只接受字母也在不同的功能 – EnexoOnoma

+0

@Giorkouros,这里是ASCII表:http://www.asciitable.com/根据你的意思是字母结果将是不同的。例如,如果你想要A-Z,那么范围是[65,90],而a-z是[97,122]。 –

28

有了HTML5,你可以做

<input type="number"> 

您还可以使用正则表达式来限制输入文本。

<input type="text" pattern="^[0-9]*$" /> 
+3

这不会阻止输入非数字字符。 – MyNameIsKo

+0

@MyNameIsKo它应该,也许你正在使用不支持这种HTML5功能的客户端? – powtac

+0

它不适用于Chrome或Firefox。您可能指的是非数字字符的提交验证,它可以在HTML5中正常工作。然而,最初的问题是关于完全防止非数字输入。我非常确定JavaScript仍然是唯一的方法。 – MyNameIsKo

13

你也可以使用一些HTML5属性,一些浏览器可能已经利用它们(type="number" min="0")。不管你做什么,记得在服务器端重新检查你的输入:你永远不能假设客户端验证已经执行。

相关问题