有什么方法可以查出用户是按百分比键还是 5 数字?它在 FireFox 中具有相同的键码。
问问题
2797 次
4 回答
14
您可以检查事件对象提供的修饰键。event.shiftKey
适用于您的特定用例。此外,还有事件的event.altKey
,event.ctrlKey
和event.metaKey
(用于 windows 中的 windows 键和 MAC 键盘中的 command 键)属性。在代码示例中,您必须在 keyCode 处理程序中执行检查:
var NUMBER_FIVE = 53;
element.onkeydown = function (event) {
if (event.keyCode == NUMBER_FIVE) {
if (event.shiftKey) {
// '%' handler
} else {
// '5' handler
}
}
};
此外,在使用时,event.keyCode
您正在处理用户在键盘上按下的内容。如果你想检查特定的 ASCII 字符,那么你可以使用它event.charCode
,因为这个事件属性告诉你用户正在输入什么字符,而不是告诉你用户在键盘上按什么。这是关于 quirksmode 的完整指南。
于 2012-10-09T14:01:48.067 回答
4
如果使用keydown
5 和 % 是相同的 keyCode。事件对象还有一个shiftKey
布尔属性,它会告诉您用户是否正在按住 shift。
document.onkeydown = function (e) {
if (e.keyCode === 53) {
if (e.shiftKey) {
// they pressed %
} else {
// they pressed 5
}
}
};
如果要使用keypress
,它们是两个不同的 keyCode:
document.onkeypress = function (e) {
if (e.keyCode === 53) {
// they pressed 5
}
if (e.keyCode === 37) {
// they pressed %
}
};
该站点非常适合测试 keyCodes。
于 2012-10-09T14:03:58.233 回答
0
检查 shiftKey 值:jsfiddle
$(document).keydown(function(e){
if( e.keyCode == 53 ){
if(e.shiftKey){
// % pressed
}
else{
// 5 pressed
}
}
});
于 2012-10-09T14:03:45.003 回答
0
我测试了 keyCode 和正在输入的字符的值。
$(document).on({
keypress: function(event){
var charCode = (event.which) ? event.which : event.keyCode;
var mFive = String.fromCharCode(event.which);
if ((charCode == 53) && (mFive === "5")){
return true;
}else if ((charCode == 53) && (mFive !== "5")){
return false;
}
});
于 2014-01-23T19:20:45.660 回答