Search code examples
javascriptdom-eventskeypresskeyboard-events

Handling Alt + Enter key press in JavaScript


I'm trying to get some pure JavaScript code to handle Alt + Enter key press event in a text area but am failing miserably. What is wrong?

Html

<textarea id="ta" style="width:100%;height:500px">
</textarea>

JavaScript

var ta = document.getElementById('ta');
ta.onkeypress = function(e) {
   if (e.charCode == 10 && e.altKey){
      alert(
         "Key Pressed: " + String.fromCharCode(e.charCode) + "\n"
          + "charCode: " + e.charCode + "\n"
          + "Alt key pressed: " + e.altKey + "\n"
      );      
   }
};

JSFiddle

Here


Solution

  • This solution, which is based on this example in the MDN documentation seems to be the most cross-browser friendly way:

    var ta = document.getElementById('ta');
    ta.onkeydown = function (event) {
        if (event.defaultPrevented) {
           return;
        }
        var handled = false;
        if (event.key !== undefined) {
           if (event.key === 'Enter' && event.altKey) {
              alert('Alt + Enter pressed!');
           }
        } else if (event.keyIdentifier !== undefined) {
           if (event.keyIdentifier === "Enter" && event.altKey) {
              alert('Alt + Enter pressed!');
           }
    
        } else if (event.keyCode !== undefined) {
           if (event.keyCode === 13 && event.altKey) {
              alert('Alt + Enter pressed!');
           }
        }
        if (handled) {
           event.preventDefault();
        };
    };
    

    Updated fiddle