4

有什么方法可以查出用户是按百分比键还是 5 数字?它在 FireFox 中具有相同的键码。

4

4 回答 4

14

您可以检查事件对象提供的修饰键。event.shiftKey适用于您的特定用例。此外,还有事件的event.altKey,event.ctrlKeyevent.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

如果使用keydown5 和 % 是相同的 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 回答