只允许在文本框中输入数字

IT技术 javascript
2021-02-02 06:09:54

如何在没有 jquery 或任何库的情况下只允许在此文本框中写入数字?

<input type="text" class="textfield" value="" id="extra7" name="extra7">
3个回答

您可以订阅 onkeypress 事件:

<input type="text" class="textfield" value="" id="extra7" name="extra7" onkeypress="return isNumber(event)" />

然后定义isNumber函数:

function isNumber(evt) {
    evt = (evt) ? evt : window.event;
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        return false;
    }
    return true;
}

你可以在这里看到它的实际效果

我不知道如何解释你的if条款。如果它大于57,它总是大于31。我认为你可以去掉括号。
2021-03-20 06:09:54
只接受来自键盘字母部分的数字值。为什么此功能不接受位于键盘右侧的数字小键盘键?
2021-03-25 06:09:54
我仍然可以在文本框中复制和粘贴非数值
2021-03-31 06:09:54
如果您 c/p 一些文本,那将不起作用
2021-04-01 06:09:54
不适用于移动设备(Android + Chrome)
2021-04-01 06:09:54

使用 HTML5,您可以做到

<input type="number">

您还可以使用正则表达式模式来限制输入文本。

<input type="text" pattern="^[0-9]*$" />
允许“.” ,这可能是不可取的
2021-03-21 06:09:54
它不适用于 Chrome 或 Firefox。您可能指的是非数字字符的提交验证,它确实适用于 HTML5。然而,最初的问题是对完全防止非数字输入感兴趣。我很确定 JavaScript 仍然是做到这一点的唯一方法。
2021-03-26 06:09:54
Firefox 不支持类型号。
2021-03-31 06:09:54
这不会阻止输入非数字字符。
2021-04-10 06:09:54
@MyNameIsKo 应该可以,也许您使用的客户端不支持这种 HTML5 功能?
2021-04-11 06:09:54

您还可以使用一些 HTML5 属性,某些浏览器可能已经利用了它们 ( type="number" min="0")。

无论您做什么,请记住在服务器端重新检查您的输入:您永远不能假设已经执行了客户端验证。

Firefox 不支持类型号和最小值
2021-04-02 06:09:54