我用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)
代表那些字符而不是压制字符?
答案 0 :(得分:3)
您想要处理键盘产生的实际字符,而不是键的布局位置。
$.fn.mask = function(regex) {
this.on("keypress", function(e) {
if (regex.test(String.fromCharCode(e.which))) {
return false;
}
});
}
keypress
事件报告所生成角色的代码点。