我使用JS构建了一个只接受数字的机制:
但是我想允许: 删除,退格,左箭头,右箭头:
我提出的解决方案是:假设我在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
表达式是什么?
P.S。 : 奇怪,但我看到的所有解决方案都不想允许删除, Backspace ,左箭头,右箭头字符,只是类别本身。
答案 0 :(得分:3)
我将this question的答案与以下检查结合起来,以确保我只捕获数字,同时允许不可打印的字符。但是,你必须对粘贴操作做些什么。
return !window.isNaN(String.fromCharCode(event.which))
请参阅jsFiddle。