javascript - 仅允许输入数字

标签 javascript

我有这个 JavaScript 代码,只允许在文本框中输入数字

    function CheckNumeric(e) {

        if (window.event) // IE 
        {
            if ((e.keyCode < 48 || e.keyCode > 57) & e.keyCode != 8) {
                event.returnValue = false;
                return false;
            }
        }
        else { // Fire Fox
            if ((e.which < 48 || e.which > 57) & e.which != 8) {
                e.preventDefault();
                return false;
            }
        }
    }

问题是它也阻止了“TAB”按钮!我愿意允许。

我怎样才能做到这一点?

最佳答案

我会将 CheckNumeric 函数更改为类似的内容,并使用正则表达式来确定有效/无效输入。 /[0-9\t\b]+/ 匹配数字、制表符和退格键。如果您还想允许空间,请将其更改为 /[0-9\t\b\s]+/

function CheckNumeric(e)
{
    var charCode = e.charCode || e.keyCode;
    var character = String.fromCharCode(charCode);
    if(!character.match(/[0-9\t\b]+/))
    {
        if(window.event)
            event.returnValue = false;
        else
            e.preventDefault();
        return false;
    }
    return true;
}

此外,为了正确捕获键码,您应该绑定(bind)到 onKeyPress 事件而不是 onKeyDown,因为它不会为数字键盘提供正确的键码。

<input type="text" onkeypress="CheckNumeric(event)"/>

关于javascript - 仅允许输入数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13749215/

相关文章:

javascript - 使用 javascript 限定符时 safari 和 chrome 之间的不同行为 `const`

javascript - Jquery javascript 使用 $this 折叠

javascript - 我可以在 nodejs 应用程序中使用 es6 样式模块导入吗

javascript - window.setInterval 不起作用

javascript - 我使图像看起来像一个可点击的按钮,但现在当我点击它时,它不充当超链接?

javascript - 一段时间后加载网页 ASP.net 使用 Javascript

javascript - es6模块中导出对象的正确方法

javascript - jQuery:动画 Div 在 'Click' 上调整大小

javascript - jquery 不适用于具有特定网页的 WebBrowser 控件

javascript - 无法向表中添加新行