Firefox中的JavaScript键盘密钥代码0

时间:2015-11-09 17:55:18

标签: javascript jquery firefox

我有以下代码,我试图在输入中仅允许3位数字0-9,但仍然允许用户使用箭头键,退格键和删除键。

它适用于其他浏览器,但在firefox中,输出到控制台显示箭头键和删除键注册为关键代码0.什么给出了?

代码:

$input.
    keypress(function(e) {
        var currentLength = $input.val().length;
        var c = e.which;
        console.log("key", c);
        //0=48, 9=57, 37-40 = arrow keys 8= backspace,  46=delete
        if (c === 8 || c === 46 || (c >= 37 && c <=40)) {
            //delete, backspace, and arrow keys are allowed
        } else if (c < 48 || c > 57 || currentLength >= 3) {
            e.preventDefault();
        }
    }).on("paste", function(e) {
        e.preventDefault();
    });

小提琴:http://jsfiddle.net/2cjpdfcy/

2 个答案:

答案 0 :(得分:1)

要使所有密钥代码使用keyup而不是keypress

$input.keyup(function(e) {
    // your logic...
});

Updated fiddle

答案 1 :(得分:1)

替换它:

var c = e.which;

with:

var c = e.keyCode || e.which;

一切都会奏效。

http://jsfiddle.net/2cjpdfcy/2/