Ctrl+Enter jQuery in TEXTAREA
Solution 1:
Actually this one does the trick and works in all browsers:
if ((event.keyCode == 10 || event.keyCode == 13) && event.ctrlKey)
link to js fiddle.
Notes:
- In Chrome on Windows and Linux, enter would be registered as
keyCode
10, not 13 (bug report). So we need to check for either. -
ctrlKey
is control on Windows, Linux and macOS (not command). See alsometaKey
.
Solution 2:
You can use the event.ctrlKey
flag to see if the Ctrl key is pressed, something like this:
$('#textareaId').keydown(function (e) {
if (e.ctrlKey && e.keyCode == 13) {
// Ctrl-Enter pressed
}
});
Check the above snippet here.
Solution 3:
Universal solution
This supports macOS as well: both Ctrl+Enter and ⌘ Command+Enter will be accepted.
if ((e.ctrlKey || e.metaKey) && (e.keyCode == 13 || e.keyCode == 10)) {
// do something
}
Solution 4:
I found answers of others either incomplete or not cross-browser compatible.
This code works google chrome.
$(function ()
{
$(document).on("keydown", "#textareaId", function(e)
{
if ((e.keyCode == 10 || e.keyCode == 13) && e.ctrlKey)
{
alert('ctrl+enter');
}
});
});
Solution 5:
This can be extended to a simple-but-flexible JQuery plugin as in:
$.fn.enterKey = function (fnc, mod) {
return this.each(function () {
$(this).keypress(function (ev) {
var keycode = (ev.keyCode ? ev.keyCode : ev.which);
if ((keycode == '13' || keycode == '10') && (!mod || ev[mod + 'Key'])) {
fnc.call(this, ev);
}
})
})
}
Thus
$('textarea').enterKey(function() {$(this).closest('form').submit(); }, 'ctrl')
should submit a form when the user presses ctrl-enter with focus on that form's textarea.
(With thanks to https://stackoverflow.com/a/9964945/1017546)