JQuery为大写和小写返回相同的charcode

时间:2012-07-22 01:06:50

标签: jquery

我已经使用jquery将此函数附加到按键事件,但在eventObject中它返回相同的字符和小写字符输入的字符代码

function keyPressed(delegates,eventdata){
        var keyType = new KeyType();
        var keycode = eventdata.which;
        if((keycode === 0)&&(eventdata.keyCode === 46)){
            keycode=46;
        }
        switch(keycode)
        {
        case keyType.enter:
            break;
        case keyType.backspace:
            break;
        case keyType.del:
            break;
        case keyType.space:
            break;
        default:
            keycode = 1;
        }
        console.log(eventdata.charCode);
        console.log(eventdata.which);
        console.log(eventdata.keyCode);
        //if a delegate is present call it
        var delegate = delegates[keycode];
        if(delegate !== null){
            delegate(eventdata);
    }
}

2 个答案:

答案 0 :(得分:1)

char代码表示按下的键。您的键盘只有一个“a”和“A”键。您还需要检查shift键:

  if (eventData.shiftKey) {
    //Shift
  }
  if (eventData.ctrlKey) {
    //Ctrl
  }
  if (eventData.altKey) {
    //Alt
  }

答案 1 :(得分:1)

使用jQuery检测键盘/鼠标事件时,应始终使用event.which来获取跨浏览器的规范化用户输入。

稍微偏离主题的说明性历史,几个月前我在Vanilla JS中制作了一个用户手册,它在FF和Chrome中运行得非常好,而且刚才我有一份报告称它在Opera中不起作用。我在Opera上快速调试了它,当然event.keyCode在它应该是键的值时返回0

所以,是的,每当你可以使用jQuery的event.which来处理用户输入时,使用它来节省很多麻烦。

keydownkeypress是不同的事件,因此可能会针对不同的事件报告不同的值 - 这可能会因为keyCode和/或charCode属性而有所不同在不同的浏览器。 event.which最大限度地减少了这些差异。