虽然我知道由于e.keyCode
vs e.charCode
而捕获密钥并非易事,但我认为jQuery几乎可以将这些不一致的大部分归一化。
然而,虽然answering this question我发现字符#
似乎有非常不一致的keyCodes(当然,对于其他几个代码也是如此,主要取决于我猜的浏览器和键盘布局)
Chrome和IE在我的计算机上产生了191,Firefox 163,另一个用户报告了222. Chromes window.event
甚至报告U+00BF
为keyIdentifier - 根据unicode表应为¿
。< / p>
您是否知道任何一致的方法来确定像#
这样的符号,如果键盘代码不一致,而不会像下面那样做出令人讨厌的事情:
$('input').keydown(function (e) {
if (e.which == 191 || e.which == 163 || e.which == 222){
// hope you got the right key
e.preventDefault();
}
});
答案 0 :(得分:7)
这适用于使用美式键盘的Chrome和Firefox:
$('[id$=txtClient]').keypress(function (e) {
if (String.fromCharCode(e.which) == '#') {
e.preventDefault();
}
});
keypress
是唯一能为您提供有关输入的字符的可靠信息的事件。
答案 1 :(得分:0)
您是否尝试过使用keypress
活动?
documentation警告平台之间可能出现的行为差异。
至少在Firefox中,e.which
对应于转换后输入字符的ascii代码:
$('#txtClient').keypress(function (e) {
console.log('keypress:', e.which);
if (e.which == 35) {
return false;
}
});