将输入框限制为仅数字 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)它允许非数字按shift
或ctrl
键加上数字(例如@、#、$)时的字符。看看这个答案:***.com/questions/995183/…
在 Typescript 键码中已弃用。你能建议我另一种方式吗【参考方案2】:
使用 HTML5
<input type="number">
您也可以使用Modernizr 来实现向后兼容性
【讨论】:
以上是关于将输入框限制为仅数字 0-9 [重复]的主要内容,如果未能解决你的问题,请参考以下文章