我搜索過Google,但是我能找到的所有解決方案都非常複雜和漫長。我需要的是限制我只對數字進行的調查中的文本字段的輸入。什麼是最快和最乾淨的方式來做到這一點?限制Textfield只能輸入數字
(我使用HTML 4.01嚴格和ECMAScript)
在此先感謝。
我搜索過Google,但是我能找到的所有解決方案都非常複雜和漫長。我需要的是限制我只對數字進行的調查中的文本字段的輸入。什麼是最快和最乾淨的方式來做到這一點?限制Textfield只能輸入數字
(我使用HTML 4.01嚴格和ECMAScript)
在此先感謝。
最快:
<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。
如果你還沒有使用框架,Straight JS很好,例如。 jQuery的。我不會僅僅爲了添加這一小部分功能而包含jQuery。 – 2014-04-17 04:51:52
如果您使用jQuery,則可以使用AlphaNumeric plugin。有了這個插件這將是一個問題:
$('.numeric_field').numeric();
請記住,使用JavaScript強制某些類型的輸入不會取代服務器端驗證;我可以簡單地在javascript關閉的情況下運行你的頁面,或者甚至在提交之前用類似螢火蟲的方式修改你的頁面。通過JS不允許某些字符不會阻止他們被真正想要的人提交。 – Erik 2010-01-16 02:02:11
當然可以。驗證在服務器端完成。在客戶端,您只需提高可用性即可。 – 2010-01-16 11:59:06
我們解決了這個用一個簡單的組合,拳頭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層的功能,一個用於正常用戶輸入(按鍵),另一個用於一個複製+糊修正(變更) 。
看看這個例子:[只允許數字進入文本框](http://www.java2s.com/Code/JavaScript/Form-Control/AllowingOnlyNumbersintoaTextBox.htm) – 2010-01-16 00:43:39
嗯,這似乎並不因某種原因工作。 – Hussain 2010-01-16 01:35:56
那個例子是12歲。不建議檢查出來。 – 2013-08-21 18:39:20