将输入框限制为仅数字 0-9 [重复]

Posted

技术标签:

【中文标题】将输入框限制为仅数字 0-9 [重复]【英文标题】:Restricting an input box to only numbers 0-9 [duplicate] 【发布时间】:2013-08-11 23:36:50 【问题描述】:

如何限制输入框只使用数字。

因此,如果用户从 a-z 输入任何内容,它在输入框中将不起作用。

对某些人来说,这似乎很容易,但对我来说,这听起来像是火箭科学。

请不要使用 jQuery。

<!DOCTYPE html>

<html>

<head>

</head>

<body>

<input type="text" id="numbersonly" />

</body>

</html>

【问题讨论】:

这里是one duplicate、another、another... 这个问题已经被问了几十次了。 【参考方案1】:

您可以使用 HTML5 number 类型的输入

<input type="number" />

javascript,作为 number 类型的输入,really limit 仅输入数字:

document.getElementById('numbersonly').addEventListener('keydown', function(e) 
    var key   = e.keyCode ? e.keyCode : e.which;

    if (!( [8, 9, 13, 27, 46, 110, 190].indexOf(key) !== -1 ||
         (key == 65 && ( e.ctrlKey || e.metaKey  ) ) || 
         (key >= 35 && key <= 40) ||
         (key >= 48 && key <= 57 && !(e.shiftKey || e.altKey)) ||
         (key >= 96 && key <= 105)
       )) e.preventDefault();
);

FIDDLE

【讨论】:

在输入 % 或 ^ & 或 * 时,我遇到了具有此建议解决方案的 Firefox 浏览器。该解决方案接受了这些字符。谢谢。 Java Script 不能使用数字键,甚至不能使用退格键 这个答案是一个好的开始,但有几个严重的缺陷:(1)您不能使用退格键、删除键或箭头键来调整输入,以及(2)它允许非数字按shiftctrl 键加上数字(例如@、#、$)时的字符。看看这个答案:***.com/questions/995183/… 在 Typescript 键码中已弃用。你能建议我另一种方式吗【参考方案2】:

使用 HTML5

<input type="number">

您也可以使用Modernizr 来实现向后兼容性

【讨论】:

以上是关于将输入框限制为仅数字 0-9 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式通过 HTML 限制文本框中的输入 [重复]

asp.net怎么限制文本框输入的类型c#

如何将 CreateWindowEx 限制为仅限字母数字输入?

无法将文本框的输入限制为数字 C# [重复]

在C#中怎么用正则表达式限制文本框内不能输入数字?

VB文本框怎样限制只能输入数字值