String.fromCharCode(e.which)无法识别点和逗号

时间:2013-08-14 17:36:17

标签: javascript jquery regex

我用jQuery创建了一个输入掩码的函数:

$.fn.mask = function(regex) { 
    this.on("keydown keyup", function(e) {
        if (regex.test(String.fromCharCode(e.which))) {
            return false;
        }
    });
}

它会根据您传递的正则表达式拒绝任何输入。例子:

$("#textfield").mask(/\s/); // denies white spaces
$("#textfield").mask(/\D/); // denies anything but numbers

上面的例子有效,但我正在尝试使用正则表达式接受带小数分隔符的数字,如下所示:

$("#textfield").mask(/[^\d.,]/); // Anything except digits, dot and comma

这不起作用。但是,如果我在按String.fromCharCode(e.which).时在控制台上记录,,则会向我显示这些(相应的)字符:¾¼

问题是为什么String.fromCharCode(e.which)代表那些字符而不是压制字符?

1 个答案:

答案 0 :(得分:3)

您想要处理键盘产生的实际字符,而不是键的布局位置。

$.fn.mask = function(regex) { 
    this.on("keypress", function(e) {
        if (regex.test(String.fromCharCode(e.which))) {
            return false;
        }
    });
}

keypress事件报告所生成角色的代码点。

http://jsfiddle.net/USgNJ/