Javascript String.fromCharCode(e.which)不';我不认识点和逗号
我使用jQuery为输入掩码创建了一个函数:Javascript String.fromCharCode(e.which)不';我不认识点和逗号,javascript,jquery,regex,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/);
$.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)
代表那些字符而不是按下的字符?您想要处理的是键盘产生的实际字符,而不是按键的布局位置
$.fn.mask = function(regex) {
this.on("keypress", function(e) {
if (regex.test(String.fromCharCode(e.which))) {
return false;
}
});
}
按键
事件报告生成的字符的代码点
您从这些事件中获得的键码是键码,而不是字符码。@请原谅我的无知,但我没有区别。您正在尝试从键码中获取unicode字符,它只在keypress
处理程序中起作用(不是keydown
或keyup
)。有关详细信息,请参阅。该值标识键盘上的哪个键被按下。考虑“6”键-代码标识密钥,但相同的密钥可能导致“6”或“^”。这只是一个不同的概念。跟进@Pointy的评论,可能会有所帮助。是的,我有这个解决方案。只是等待有人把它贴到马克的正确答案上。非常感谢。