Search code examples
javascriptangularjsdom-eventskeypress

How to detect pressed keys on the click of AngularJS


I'm using angularjs on a web application that I need to figure out how can I detect is keys like ctrl, shift or alt are pressed when I click somewhere.

For example, with jQuery I can do that by accessing the Click function arguments.

Is there some out-of-the-box way to obtain that information on angular?


Solution

  • Take a look at this beautiful Stuff regarding AngularJS key handling

    So key code for Ctrl, shift, alt will be

    Ctrl - 17
    Alt - 18
    Shift - 16

    Working Demo

    HTML

    <!DOCTYPE html>
    <html>
    <head>
      <script src="angular.js"></script>
      <script src="script.js"></script>
    </head>
    
    <body ng-app="mainModule">
      <div ng-controller="mainController">
        <label>Type something:
          <input type="text"
                 ng-keydown="onKeyDown($event)"
                 ng-keyup="onKeyUp($event)"
                 ng-keypress="onKeyPress($event)" />
        </label><br />
        <strong>KEY DOWN RESULT:</strong> {{onKeyDownResult}}<br />
        <strong>KEY UP RESULT:</strong> {{onKeyUpResult}}<br />
        <strong>KEY PRESS RESULT:</strong> {{onKeyPressResult}}
      </div>
    </body>
    </html>
    

    SCRIPT

    angular.module("mainModule", [])
      .controller("mainController", function ($scope)
      {
        // Initialization
        $scope.onKeyDownResult = "";
        $scope.onKeyUpResult = "";
        $scope.onKeyPressResult = "";
    
        // Utility functions
    
        var getKeyboardEventResult = function (keyEvent, keyEventDesc)
        {
          return keyEventDesc + " (keyCode: " + (window.event ? keyEvent.keyCode : keyEvent.which) + ")";
        };
    
        // Event handlers
        $scope.onKeyDown = function ($event) {
          $scope.onKeyDownResult = getKeyboardEventResult($event, "Key down");
        };
    
        $scope.onKeyUp = function ($event) {
          $scope.onKeyUpResult = getKeyboardEventResult($event, "Key up");
        };
    
        $scope.onKeyPress = function ($event) {
          $scope.onKeyPressResult = getKeyboardEventResult($event, "Key press");
        };
      });