jQuery capture CTRL + S and Command + S (Mac)

google-chrome, jquery, keyboard-shortcuts, keypress, macos

Solution

This code works for me. I tested it in Chrome (v33) Firefox (v24) and Safari (v6.1.1 ). Both Control+S and Command+S work.

$(document).keydown(function(event) {
        // If Control or Command key is pressed and the S key is pressed
        // run save function. 83 is the key code for S.
        if((event.ctrlKey || event.metaKey) && event.which == 83) {
            // Save Function
            event.preventDefault();
            return false;
        };
    }
);

Please note that I am using `keydown` and not `keypress`. In the jQuery docs they sate:

Note: as the keypress event isn't covered by any official specification, the actual behavior encountered when using it may differ across browsers, browser versions, and platforms.

I would avoid using it.

Problem

I know this question was asked serval times here on stackoverflow and I tried some different solutions, but can't find a code that works for me. I want to capture the keyboard command Ctrl+S and Command+S on Mac, currently I use this code (with jQuery 2.1.0): ``` jQuery(window).on('keypress', function(event){ if (!(event.which == 115 && (event.ctrlKey||event.metaKey)) && !(event.which == 19)) return true; // my save function event.preventDefault(); return false; }); ``` This Code works fine in: - Safari: With Ctrl+S and Command+S - Firefox: With Ctrl+S and Command+S - Chrome: Only Ctrl+S works You will see that the problem is Google Chrome, here I can only capture Ctrl+S. Has anybody an idea how I can solve this problem?

Original source