为什么人们会写这样的语句
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");
}
}发布于 2009-09-18 13:17:16
它是一个条件语句。
如果浏览器支持e.keyCode,则使用e.keyCode否则使用e.charCode。
它类似于
var code = event.keyCode || event.charCodeevent.keyCode:返回按键事件中非字符键的Unicode值或任何其他类型键盘事件中的任意键的Unicode值。
event.charCode:返回在按键事件期间按下的字符键的Unicode值。
发布于 2015-12-12 10:10:02
好了,这里有一些解释。
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>Getting keyCode and charCode in JavaScript的实时示例。
https://stackoverflow.com/questions/1444477
复制相似问题