我搜索过谷歌,但我能找到的所有解决方案都非常复杂和冗长。我需要的是限制我正在进行的调查中的文本字段的输入仅限于数字。什么是最快,最干净的方法?
(我正在使用HTML 4.01严格和ECMAScript)
提前致谢。
答案 0 :(得分:7)
最快:
<input type="text" onkeyup="this.value = this.value.replace(/\D/g, '')">
这不会阻止人们用鼠标粘贴东西,所以也可能需要改变和onclick。
最干净(或者至少是一种干净的方式):
function forceNumeric() {
this.value = this.value.replace(/\D/g, '');
}
如果您正在使用JS框架,请为所有数字输入提供一个表示事实的类( class =“numeric”或类似的东西),并添加forceNumeric作为回调 keyup ,更改和点击到该类的任何输入元素:
$('.numeric').keyup(forceNumeric).change(forceNumeric).click(forceNumeric);
如果您正在使用直接JS(我建议不使用直接JS),请使用 element.addEventListener 或 onkeyup , onchange , onclick 。
答案 1 :(得分:1)
如果您使用的是jQuery,则可以使用AlphaNumeric plugin。有了这个插件,它将是一个问题:
$('.numeric_field').numeric();
答案 2 :(得分:0)
我们用一个简单的组合解决了这个问题,并坚持使用HTML:
<input type="tel">
使用type tel有两种方式:浏览器验证和在移动设备上显示数字键盘,以获得更好的用户体验。
然后,一个简单的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个功能,一个用于普通用户输入(按键),另一个用于复制+粘贴修复(更改)。