在页面中发生keydown和keyup事件时,event对象的keyCode属性中会包含一个代码,与键盘上一个特定的键对应。
与数字字母键,keyCode属性的值与ASCII码中对应小写字母或数字的编码相同。
因此,数字键7的keyCode值为55,而字母A键的keyCode值为65——与Shift键的状态无关。
DOM和IE的event对象都支持keyCode属性。
例子:
var EventUtil = { getEvent: function (event) { return event ? event : window.event; }, addHandler: function (element, type, handler) { if (element.addEventListener) { element.addEventListener(type, handler, false); } else if (element.attachEvent) { element.attachEvent("on" + type, handler); } else { element["on" + type] = handler; } } }; var textbox = document.getElementById("myText"); EventUtil.addHandler(textbox, "keyup", function (event) { event = EventUtil.getEvent(event); alert(event.keyCode); });
以上例子中,用户每次在文本框中按键触发keyup事件时,都会显示keyCode的值。
无论是keydown或keyup事件都会存在一些特殊情况。
在Firefox和Opera中,按分号键时keyCode值为59,也就是ASII中分号的编码;但IE和Safari返回186,即键盘中按钮的键码。
在Safari3之前的版本中,上、下、左、右箭头和上、下翻页键返回大于63000的值。
在Opera9.5之前的版本中,会将非数字字母键的keyCde设置为等于相应字符的ASCII编码,因此小于键返回44而不是188。
在Safari3之前的版本中,不会因为按下了制表、上档、控制或替代键而触发keydown和keyup事件。