Javascript 仅将文本字段输入限制为数字

Javascript 仅将文本字段输入限制为数字,javascript,html,forms,Javascript,Html,Forms,我搜索过谷歌,但我能找到的所有解决方案都非常复杂和漫长。我需要的是将我正在进行的调查中文本字段的输入限制为仅数字。最快最干净的方法是什么 (我正在使用HTML4.01Strict和ECMAScript) 提前感谢。如果您正在使用jQuery,您可以使用。有了这个插件,问题在于: $('.numeric_field').numeric(); 最快的: <input type="text" onkeyup="this.value = this.value.replace(/\D/g, '')

我搜索过谷歌,但我能找到的所有解决方案都非常复杂和漫长。我需要的是将我正在进行的调查中文本字段的输入限制为仅数字。最快最干净的方法是什么

(我正在使用HTML4.01Strict和ECMAScript)


提前感谢。

如果您正在使用jQuery,您可以使用。有了这个插件,问题在于:

$('.numeric_field').numeric();
最快的:

<input type="text" onkeyup="this.value = this.value.replace(/\D/g, '')">
如果您使用的是JS框架,请为所有仅数字输入提供一个指示事实的类(class=“numeric”或类似的内容),并添加forceNumeric作为键控更改,然后单击该类的任何输入元素:

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

如果您使用的是straight JS(我建议不要使用straight JS),可以使用元素。addEventListener,或者onkeyuponchange,以及onclick我们通过一个简单的组合解决了这个问题,首先是HTML:

<input type="tel">

使用tel类型有两种帮助:浏览器验证和在移动设备上显示数字键盘,以获得更好的用户体验

然后是一个简单的JS验证(jQuery示例):

$('[type=tel]')。关于('change',函数(e){
$(e.target).val($(e.target).val().replace(/[^0-9]/g'))
})
$('[type=tel]')。在('keypress',function()上{

return event.charCode>=48&&event.charCode请记住,使用javascript强制某些类型的输入不会取代服务器端验证;我可以在关闭javascript的情况下运行您的页面,甚至在提交之前用firebug之类的方式对页面进行修改。不允许通过JS执行某些字符不会阻止em被真正想要的人提交。是的,当然。验证是在服务器端完成的。在客户端,你只是在提高可用性。看看这个示例:嗯,出于某种原因,这似乎不起作用。这个示例已经有12年了。不建议检查它。如果你还不是我们,直接JS就可以了我不会为了添加这一点点功能而包含jQuery。
<input type="tel">
$('[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
})