3 回答

TA贡献1827条经验 获得超4个赞
始终如一地处理关键事件并非易事。
首先,有两种不同类型的代码:键盘代码(代表用户按下的键盘上的键的数字)和字符代码(代表Unicode字符的数字)。您只能在keypress事件中可靠地获取字符代码。不要尝试获取keyup和keydown事件的字符代码。
其次,您在keypress事件中获得的值集与在keyup或keydown事件中获得的值不同。
我建议将此页面作为有用的资源。作为总结:
如果您有兴趣检测用户键入字符,请使用该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");
}
}

TA贡献1884条经验 获得超4个赞
这是一个条件语句。
如果浏览器支持e.keyCode,则采用e.keyCode,否则为e.charCode。
它类似于
var code = event.keyCode || event.charCode
event.keyCode:返回按键事件中的非字符键或任何其他类型的键盘事件中的任何键的Unicode值。
event.charCode:返回在按键事件期间按下的字符键的Unicode值。

TA贡献1847条经验 获得超11个赞
好的,这里是解释。
e.keyCode-用于获取代表键盘上键的数字
e.charCode-一个数字,代表键盘上按键的unicode字符
e.which-(特定于jQuery)是jQuery中引入的属性(请勿在纯JavaScript中使用)
以下是获取keyCode和charCode的代码段
<script>
// get key code
function getKey(event) {
event = event || window.event;
var keyCode = event.which || event.keyCode;
alert(keyCode);
}
// get char code
function getChar(event) {
event = event || window.event;
var keyCode = event.which || event.keyCode;
var typedChar = String.fromCharCode(keyCode);
alert(typedChar);
}
</script>
在JavaScript中获取keyCode和charCode的实时示例。
添加回答
举报