admin管理员组文章数量:1313085
How can I handle ArrowKeys and <
(Greater Than) in a Javascript function? Which event and which code (charCode Or keyCode)?
I am very confused how to do this. I have read this link very carefully, Events and keyCode+charCode, but I could not find any solution for my scenario.
How can I handle ArrowKeys and <
(Greater Than) in a Javascript function? Which event and which code (charCode Or keyCode)?
I am very confused how to do this. I have read this link very carefully, Events and keyCode+charCode, but I could not find any solution for my scenario.
Share Improve this question edited Jul 5, 2010 at 19:14 BalusC 1.1m376 gold badges3.6k silver badges3.6k bronze badges asked Jul 5, 2010 at 19:02 SilverLightSilverLight 20.5k68 gold badges196 silver badges312 bronze badges3 Answers
Reset to default 5Using event.keyCode
is sufficient. You only need to browser patibility issues with regard to obtaining the key event into account.
Here's a basic kickoff example which captures arrow keys, copy'n'paste'n'run it:
<!DOCTYPE html>
<html lang="en">
<head>
<title>SO question 3181648</title>
<script>
document.onkeydown = function(e) {
e = e || event; // "real browsers" || IE6/7.
switch (e.keyCode) {
case 37: alert('left'); break;
case 38: alert('up'); break;
case 39: alert('right'); break;
case 40: alert('down'); break;
}
}
</script>
</head>
<body>
<p>Press one of the arrow keys.</p>
</body>
</html>
Note that attaching events is better to be done this way or using jQuery.
For capturing the pressed characters like <
, have a look at Tim's answer.
When detecting a non-text-input key such as an arrow key, using the keydown
event is the correct approach. For detecting a typed character such as <
, using the keypress
event is the only safe approach. If you instead use the keydown
event and its keyCode
property, this is not guaranteed to work on types of keyboard and browsers different to your own.
If you really want to learn about JavaScript key handling, I remend the following page: http://unixpapa./js/key.html
Here's an example for your requirements:
document.onkeydown = function(evt) {
evt = evt || window.event;
switch (evt.keyCode) {
case 37: alert("left"); break;
case 38: alert("up"); break;
case 39: alert("right"); break;
case 40: alert("down"); break;
}
};
document.onkeypress = function(evt) {
evt = evt || window.event;
var charCode = evt.which || evt.keyCode;
var charStr = String.fromCharCode(charCode);
if (charStr == "<") {
alert("<");
}
};
<script type="text/javascript">
var Keys = {
BACKSPACE: 8, TAB: 9, ENTER: 13, SHIFT: 16,
CTRL: 17, ALT: 18, PAUSE: 19, CAPS: 20,
ESC: 27, PAGEUP: 33, PAGEDN: 34, END: 35,
HOME: 36, LEFT: 37, UP: 38, RIGHT: 39,
DOWN: 40, INSERT: 45, DELETE: 46,
n0: 48, n1: 49, n2: 50, n3: 51, n4: 52,
n5: 53, n6: 54, n7: 55, n8: 56, n9: 57,
A:65, B:66, C:67, D:68, E:68, F:70, G:71, H:72, I:73, J:74, K:75,
L:76, M:77, N:78, O:79, P:80, Q:81, R:82, S:83, T:84, U:85, V:86,
W:87, X:88, Y:89, Z:90,
WINLEFT: 91, WINRIGHT: 92, SELECT: 93, NUM0: 96,
NUM1: 97, NUM2: 98, NUM3: 99, NUM4: 100,
NUM5: 101, NUM6: 102, NUM7: 103, NUM8: 104,
NUM9: 105, MULTIPLY: 106, ADD: 107, SUBTRACT: 109,
DECIMAL: 110, DIVIDE: 111, F1: 112, F2: 113,
F3: 114, F4: 115, F5: 116, F6: 117,
F7: 118, F8: 119, F9: 120, F10: 121,
F11: 122, F12: 123, NUMLOCK: 144, SCROLLLOCK: 145,
SEMICOLON: 186,EQUAL: 187, COMMA: 188, DASH: 189,
PERIOD: 190, FORWARDSLASH: 191, GRAVEACCENT: 192,
OPENBRACKET: 219, BACKSLASH: 220,
CLOSEBRACKET: 221, QUOTE: 222
};
/* true - will be handled also by default handler and for false - will not (if you wanna disable some keys) */
function pressedKeyHandler(key){
if (k != Keys.COMMA || k != Keys.DASH) return true;
//handle pressed button here
return true;
}
if (typeof window.event != 'undefined') // IE
document.onkeydown = function() { return pressedKeyHandler(event.keyCode); }
else // FireFox/Opera/Others
document.onkeypress = function(e) { return pressedKeyHandler(e.keyCode); }
</script>
I may be wrong but seems that for IE better to handle onkeydown event rather then onkeypress.
本文标签:
版权声明:本文标题:How can I handle ArrowKeys and < (Greater Than) in a Javascript function? Which event and which code (charCode Or keyCode 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741923563a2405149.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论