Javascript onkeydown百分比或五个数字

时间:2012-10-09 13:59:37

标签: javascript numbers onkeydown

有没有办法找出用户是按了百分比键还是5号?它在FireFox中具有相同的密钥代码。

4 个答案:

答案 0 :(得分:14)

您可以检查事件对象提供的修饰键。 event.shiftKey适用于您的特定用例。此外,还有event.altKeyevent.ctrlKeyevent.metaKey(对于Windows中的Windows键和MAC键盘中的命令键)属性。 在代码示例中,您必须在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代替,因为此事件属性会告诉您用户输入的字符,而不是告诉您用户正在按什么字符键盘。 Here's a complete guide for this on quirksmode.

答案 1 :(得分:4)

如果您使用keydown,则5和%是相同的keyCode。事件对象还有一个shiftKey布尔属性,它将告诉您用户是否持有shift。

document.onkeydown = function (e) {
    if (e.keyCode === 53) {
        if (e.shiftKey) {
            // they pressed %
        } else {
            // they pressed 5
        }
    }
};

如果你想使用keypress,它们是两个不同的keyCodes:

document.onkeypress = function (e) {
    if (e.keyCode === 53) {
        // they pressed 5
    }

    if (e.keyCode === 37) {
        // they pressed %
    }
};

This site适用于测试keyCodes。

答案 2 :(得分:0)

检查shiftKey值:jsfiddle

$(document).keydown(function(e){
  if( e.keyCode == 53 ){
      if(e.shiftKey){
        // %  pressed

     }
     else{
       // 5 pressed
     }
  }

});​

答案 3 :(得分: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;
   }
 });