2011-09-03 76 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")。不管你做什麼,記得在服務器端重新檢查你的輸入:你永遠不能假設客戶端驗證已經執行。

相關問題