Antworten:
Sie können das event.ctrlKey
Flag verwenden, um zu sehen, ob die CtrlTaste gedrückt wird.
$('#textareaId').keydown(function (e) {
if (e.ctrlKey && e.keyCode == 13) {
// Ctrl-Enter pressed
}
});
Überprüfen Sie das obige Snippet hier .
10
, lautet der Tastencode nicht 13
.
keypress
Ereignis, wird der Schlüsselcode 10 sein, aber keydown
oder keyup
wird 13 melden. Nur Chrom testen
Eigentlich macht dieser den Trick und funktioniert in allen Browsern:
if ((event.keyCode == 10 || event.keyCode == 13) && event.ctrlKey)
Link zu js Geige .
Anmerkungen:
keyCode
10 registriert , nicht als 13 ( Fehlerbericht ). Also müssen wir nach beidem suchen.ctrlKey
ist controlunter Windows, Linux und MacOS (nicht command). Siehe auch metaKey
.ctrlKey
entspricht der Befehlstaste auf Macs?
if ((e.keyCode == 10 || e.keyCode == 13) && (e.ctrlKey || e.metaKey))
Universelle Lösung
Dies unterstützt auch macOS: Sowohl Ctrl+ Enterals auch ⌘ Command+ Enterwerden akzeptiert.
if ((e.ctrlKey || e.metaKey) && (e.keyCode == 13 || e.keyCode == 10)) {
// do something
}
e.ctrlKey
Erkennt ⌃ Control
und e.metaKey
erkennt unter macOS ⌘ Command
. Verwenden Sie diese Option, wenn sowohl Strg-Eingabe als auch Befehl-Eingabe das Verhalten auslösen sollen.
e.keyCode
von akzeptieren 10
, um zusätzlich zu Enter zu bedeuten 13
? In der MDN- keyCode
Dokumentation wird nur 13
ein möglicher Wert für Enter aufgeführt, der in mehreren Browsern und Betriebssystemen getestet wurde.
Ich fand Antworten von anderen entweder unvollständig oder nicht browserübergreifend kompatibel.
Dieser Code funktioniert mit Google Chrome.
$(function ()
{
$(document).on("keydown", "#textareaId", function(e)
{
if ((e.keyCode == 10 || e.keyCode == 13) && e.ctrlKey)
{
alert('ctrl+enter');
}
});
});
Dies kann wie folgt auf ein einfaches, aber flexibles JQuery-Plugin erweitert werden:
$.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);
}
})
})
}
So
$('textarea').enterKey(function() {$(this).closest('form').submit(); }, 'ctrl')
sollte ein Formular senden, wenn der Benutzer die Strg-Eingabetaste drückt, wobei der Schwerpunkt auf dem Textbereich des Formulars liegt.
(Dank an https://stackoverflow.com/a/9964945/1017546 )
Vielleicht etwas spät zum Spiel, aber hier ist, was ich benutze. Außerdem wird das Senden des Formulars erzwungen, das das aktuelle Ziel des Cursors ist.
$(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();
}
});
if
... else if
" zu einem einzigen vereinfachen if (e.ctrlKey && (e.keyCode == 10 || e.keyCode == 13))
.