2010-01-16 133 views
4

我搜索過Google,但是我能找到的所有解決方案都非常複雜和漫長。我需要的是限制我只對數字進行的調查中的文本字段的輸入。什麼是最快和最乾淨的方式來做到這一點?限制Textfield只能輸入數字

(我使用HTML 4.01嚴格和ECMAScript)

在此先感謝。

+0

看看這個例子:[只允許數字進入文本框](http://www.java2s.com/Code/JavaScript/Form-Control/AllowingOnlyNumbersintoaTextBox.htm) – 2010-01-16 00:43:39

+0

嗯,這似乎並不因某種原因工作。 – Hussain 2010-01-16 01:35:56

+0

那個例子是12歲。不建議檢查出來。 – 2013-08-21 18:39:20

回答

7

最快:

<input type="text" onkeyup="this.value = this.value.replace(/\D/g, '')"> 

這不會阻止粘貼東西的人與他們的鼠標,這樣一個onchange和的onclick可能是可取的,太。

最乾淨的(或至少是一個乾淨的方式來做到這一點):

function forceNumeric() { 
    this.value = this.value.replace(/\D/g, ''); 
} 

如果您使用的是JS框架,給你所有的數字,只輸入一個類,它指示的事實(類=「數字」或類似的東西),並添加forceNumeric的回調KEYUP變化,並點擊與該類任何輸入元素:

$('.numeric').keyup(forceNumeric).change(forceNumeric).click(forceNumeric); 

如果您在使用直JS(我建議不使用直JS),要麼使用element.addEventListener,或的onkeyup平變化,並的onclick

+0

如果你還沒有使用框架,Straight JS很好,例如。 jQuery的。我不會僅僅爲了添加這一小部分功能而包含jQuery。 – 2014-04-17 04:51:52

1

如果您使用jQuery,則可以使用AlphaNumeric plugin。有了這個插件這將是一個問題:

$('.numeric_field').numeric(); 
+3

請記住,使用JavaScript強制某些類型的輸入不會取代服務器端驗證;我可以簡單地在javascript關閉的情況下運行你的頁面,或者甚至在提交之前用類似螢火蟲的方式修改你的頁面。通過JS不允許某些字符不會阻止他們被真正想要的人提交。 – Erik 2010-01-16 02:02:11

+1

當然可以。驗證在服務器端完成。在客戶端,您只需提高可用性即可。 – 2010-01-16 11:59:06

0

我們解決了這個用一個簡單的組合,拳頭HTML:

<input type="tel"> 

使用type電話有助於2種方式:瀏覽器驗證和展示上更好的用戶體驗的移動設備的數字鍵盤。

然後,一個簡單的JS驗證(jQuery的示例):

$('[type=tel]').on('change', function(e) { 
    $(e.target).val($(e.target).val().replace(/[^0-9]/g, '')) 
}) 
$('[type=tel]').on('keypress', function() { 
    return event.charCode >= 48 && event.charCode <= 57 
}) 

我們最終需要2層的功能,一個用於正常用戶輸入(按鍵),另一個用於一個複製+糊修正(變更) 。