Binding arrow keys in JS/jQuery

后端 未结 16 1947
春和景丽
春和景丽 2020-11-22 12:25

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

相关标签:
16条回答
  • 2020-11-22 13:10
    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.

    0 讨论(0)
  • 2020-11-22 13:12

    Example of pure js with going right or left

            window.addEventListener('keydown', function (e) {
                // go to the right
                if (e.keyCode == 39) {
    
                }
                // go to the left
                if (e.keyCode == 37) {
    
                }
            });
    
    0 讨论(0)
  • 2020-11-22 13:13

    You can use the keyCode of the arrow keys (37, 38, 39 and 40 for left, up, right and down):

    $('.selector').keydown(function (e) {
      var arrow = { left: 37, up: 38, right: 39, down: 40 };
    
      switch (e.which) {
        case arrow.left:
          //..
          break;
        case arrow.up:
          //..
          break;
        case arrow.right:
          //..
          break;
        case arrow.down:
          //..
          break;
      }
    });
    

    Check the above example here.

    0 讨论(0)
  • 2020-11-22 13:15

    Are you sure jQuery.HotKeys doesn't support the arrow keys? I've messed around with their demo before and observed left, right, up, and down working when I tested it in IE7, Firefox 3.5.2, and Google Chrome 2.0.172...

    EDIT: It appears jquery.hotkeys has been relocated to Github: https://github.com/jeresig/jquery.hotkeys

    0 讨论(0)
  • 2020-11-22 13:18
    $(document).keydown(function(e){
        if (e.which == 37) { 
           alert("left pressed");
           return false;
        }
    });
    

    Character codes:

    37 - left

    38 - up

    39 - right

    40 - down

    0 讨论(0)
  • 2020-11-22 13:18

    With coffee & Jquery

      $(document).on 'keydown', (e) ->
        switch e.which
          when 37 then console.log('left key')
          when 38 then console.log('up key')
          when 39 then console.log('right key')
          when 40 then console.log('down key')
        e.preventDefault()
    
    0 讨论(0)
提交回复
热议问题