Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Binding arrow keys in JS/jQuery

How do I go about binding a function to left and right arrow keys in Javascript and/or jQuery? I looked at the js-hotkey plugin for jQuery (wraps the built-in bind function to add an argument to recognize specific keys), but it doesn't seem to support arrow keys.

like image 530
Alex S Avatar asked Sep 09 '09 23:09

Alex S


1 Answers

document.onkeydown = function(e) {     switch(e.which) {         case 37: // left         break;          case 38: // up         break;          case 39: // right         break;          case 40: // down         break;          default: return; // exit this handler for other keys     }     e.preventDefault(); // prevent the default action (scroll / move caret) }; 

If you need to support IE8, start the function body as e = e || window.event; switch(e.which || e.keyCode) {.


(edit 2020)
Note that KeyboardEvent.which is now deprecated. See this example using KeyboardEvent.key for a more modern solution to detect arrow keys.

like image 186
Sygmoral Avatar answered Oct 03 '22 16:10

Sygmoral