为什么人们会写这样的语句
e.keyCode ? e.keyCode : e.charCode有些人还使用e.which
有没有人能解释一下?
发布于 2009-09-18 15:21:17
始终如一地处理关键事件并不容易。
首先,有两种不同类型的代码:键盘代码(代表用户在键盘上按下的键的数字)和字符代码(代表Unicode字符的数字)。只有在keypress事件中才能可靠地获取字符代码。不要试图获取keyup和keydown事件的字符代码。
其次,在keypress事件中获得的值集合与在keyup或keydown事件中获得的值集合不同。
我推荐this page作为一个有用的资源。总结一下:
如果您对检测用户键入字符感兴趣,请使用keypress事件。奇怪的是,IE只在keyCode中存储字符代码,而所有其他浏览器都将其存储在which中。一些(但不是所有)浏览器也将其存储在charCode和/或keyCode中。一个按键处理程序示例:
function(evt) {
evt = evt || window.event;
var charCode = evt.which || evt.keyCode;
var charStr = String.fromCharCode(charCode);
alert(charStr);
}如果您对检测不可打印的键(比如光标键)感兴趣,那么可以使用keydown事件。这里,keyCode始终是要使用的属性。请注意,keyup事件具有相同的属性。
function(evt) {
evt = evt || window.event;
var keyCode = evt.keyCode;
// Check for left arrow key
if (keyCode == 37) {
alert("Left arrow");
}
}https://stackoverflow.com/questions/1444477
复制相似问题