Javascript 仅允许数字、加号、减号、逗号、F5及更多

Javascript 仅允许数字、加号、减号、逗号、F5及更多,javascript,keycode,Javascript,Keycode,我试图阻止除数字(包括字符和numpad上的数字)、减号(-)和加号(+)以及逗号(,)之外的所有按键 就像现在一样,它只键入两次我键入的值(例如,2是22),它还用新的数字替换当前值,但对于加号、减号和逗号,它插入½、m和k。我还想解锁网站上常用的典型按键,如F5、Ctrl+R、Shift+R、delete、home和end,但我不知道如何解锁F5、Shift+R和Ctrl+R $('body').on('keydown', 'input[name="textfield-correction-

我试图阻止除数字(包括字符和numpad上的数字)、减号(-)和加号(+)以及逗号(,)之外的所有按键

就像现在一样,它只键入两次我键入的值(例如,2是22),它还用新的数字替换当前值,但对于加号、减号和逗号,它插入½、m和k。我还想解锁网站上常用的典型按键,如F5、Ctrl+R、Shift+R、delete、home和end,但我不知道如何解锁F5、Shift+R和Ctrl+R

$('body').on('keydown', 'input[name="textfield-correction-temperature"]', function(c) {
    console.log(c.keyCode);
    if(c.keyCode != 107 && c.keyCode != 109 && c.keyCode != 188 && c.keyCode > 31 && (c.keyCode < 48 || c.keyCode > 57)) {
        return false;
    } else {
        var key = String.fromCharCode(c.which);
        $(this).val(key);
    }
});
$('body')。在('keydown','input[name=“textfield correction temperature”]”上,函数(c){
console.log(c.keyCode);
如果(c.keyCode!=107&&c.keyCode!=109&&c.keyCode!=188&&c.keyCode>31&&c.keyCode<48 | | c.keyCode>57)){
返回false;
}否则{
var key=String.fromCharCode(c.which);
$(此).val(键);
}
});

使用正则表达式执行相同的过程可能有助于简化代码

下面是一个使用正则表达式来屏蔽任何非数字内容的示例:

$(文档).ready(函数(){
$('body')。在('keydown','input[name=“textfield correction temperature”]”上,函数(c){
if(String.fromCharCode(c.keyCode).replace(/[^0-9]/g')=“”){
返回false;
}
});
});


对于第一个问题:对于不需要的输入返回false(这是可以的),但是如果输入有效,则手动添加输入,而不取消输入。这意味着您添加了一个字符,而系统添加了一个字符,从而导致重复。您应该始终返回false。这解决了有关复制值的问题:)谢谢!谢谢,但是我如何允许numpad上的数字与regex一起使用呢?我在文章中包含的jsfiddle应该展示一个使用数字键盘的示例。可以找到其他键码(如backspace)的正则表达式。