How do I trigger something when the cursor is within TEXTAREA and Ctrl+Enter is pressed? Using jQuery. Thanks
8 Answers
132
votes
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.
145
votes
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
.
88
votes
4
votes
2
votes
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)
1
votes
Maybe a little late to the game, but here is what I use. It will also force submit of the form that is the current target of the cursor.
$(document.body).keypress(function (e) {
var $el = $(e.target);
if (e.ctrlKey && e.keyCode == 10) {
$el.parents('form').submit();
} else if (e.ctrlKey && e.keyCode == 13) {
$el.parents('form').submit();
}
});
0
votes