Javascript Js密钥限制,但有点仁慈?

Javascript Js密钥限制,但有点仁慈?,javascript,jquery,regex,Javascript,Jquery,Regex,我使用JS构建了一个只接受数字的机制: 然而,我想允许: 删除、退格、左箭头、右箭头: 我提出的解决方案是: 假设我用html编写(我知道发送事件不好,但请关注Js代码): 但是完整的regEx表达式是什么 p、 s: 奇怪,但我看到的所有解决方案都不允许删除、退格、左箭头、右箭头字符,只允许类别本身。我将对的答案与以下检查结合起来,以确保只捕获数字,同时允许不可打印的字符。不过,您必须对粘贴操作做些什么 return !window.isNaN(String.fromCharCode(even

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

然而,我想允许: 删除、退格、左箭头、右箭头:

我提出的解决方案是:

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

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

p、 s: 奇怪,但我看到的所有解决方案都不允许删除、退格、左箭头、右箭头字符,只允许类别本身。

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

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

请参阅。

按键甚至不会为这些按键开火,至少在chrome中是这样。所以这很简单,为了跨浏览器的一致性,你必须忽略这些键。Hi@Esailija是的,但在FF中它也会触发,测试用户是否可以Ctrl+A/Z/X/C/V选项卡F5输入和屏幕截图。我讨厌被困在一个输入框中,这些都不起作用,因此我上次采取了不同的方法。这是我昨天做的,当我只需要数字输入时,它还删除了模糊(
change
)上不必要的前导零,检查它是否有用(Chrome上的丑陋攻击是因为在
input
事件中更改selectionStart/End不能正常工作,IE的攻击是因为在删除字符时它不会触发
input
事件)。对于较新的浏览器,
可能就足够了。它仍然允许插入空白,但答案不错。只需要一个
事件。它!==32
就可以了。比如。
 var regEx =/^[0-9]+$/;    
 isValid = regEx.test(keyChar); 
 return isValid; 
return !window.isNaN(String.fromCharCode(event.which))