3

我使用 JS 构建了一个只接受数字的机制:

但是我想允许 : Delete, Backspace, left arrow, right arrow:

我想出的解决方案是:

假设我用 html 编写(我知道发送事件不好,但请关注 Js 代码)

<input  onKeyPress='return CheckDigit(event)'/>



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

  function checkIfDelOrNavigate(c)
    {
        if (((c == 46) || (c == 39) || (c == 37) || (c == 8))) return true;return false;
        /*46=delete , 39,37 = arrows , 8=backspace*/
    }

问题 :

  • 这是正确的解决方案吗?(如果不是,请您提供答案)

  • 我认为它可以更改为正则表达式检查:

代码:

 var regEx =/^[0-9]+$/;    
 isValid = regEx.test(keyChar); 
 return isValid; 

但是完整的regEx表达方式是什么?

ps:奇怪,但我看到的所有解决方案都不想允许Delete, Backspace, left arrow, right arrow chars ,只是类别本身。

4

1 回答 1

3

我将此问题的答案与以下检查结合起来,以确保我只捕获数字,同时允许不可打印的字符。不过,您必须对粘贴操作做一些事情。

return !window.isNaN(String.fromCharCode(event.which))

请参阅jsFiddle

于 2012-08-19T14:09:50.123 回答