Wie kann ich etwas auslösen, wenn der Cursor innerhalb TEXTAREA- ist und Ctrl +Geben Sie gedrückt wird? Mit jQuery. DankeStrg + Enter jQuery in TEXTAREA-
Antwort
können Sie die event.ctrlKey
Flag verwenden, um zu sehen, ob die Ctrl Taste gedrückt wird, etwa wie folgt:
$('#textareaId').keydown(function (e) {
if (e.ctrlKey && e.keyCode == 13) {
// Ctrl-Enter pressed
}
});
Überprüfen Sie das obige Snippet here.
Dies funktioniert nicht in Google Chrome. Wenn Strg + Enter gedrückt wird, lautet der Tastencode "10", nicht "13". – Znarkus
Dies funktioniert nicht. Die Lösung von Yarolslav Yakovlev funktioniert einwandfrei. Bitte ändern Sie die angenommene Antwort, um Zeit zu sparen. –
Funktioniert auch nicht in Opera. –
Zuerst müssen Sie eine Flagge setzen, wenn Ctrl gedrückt wird, tun Sie dies onkeydown. dann musst du den Keydown von Enter überprüfen. Deaktivieren Sie das Flag, wenn Sie eine Tastenkombination für Ctrl sehen.
$('my_text_area').focus(function{ set_focus_flag });
//ctrl on key down set flag
//enter on key down = check focus flag, check ctrl flag
Eigentlich tut dies eine der Trick und funktioniert in allen Browsern:
if ((event.keyCode == 10 || event.keyCode == 13) && event.ctrlKey)
Link zu js fiddle
fand ich Antworten anderer entweder unvollständig oder nicht Cross-Browser kompatibel.
Dieser Code funktioniert Google Chrome.
$(function()
{
$(document).on("keydown", "#textareaId", function(e)
{
if ((e.keyCode == 10 || e.keyCode == 13) && e.ctrlKey)
{
alert('ctrl+enter');
}
});
});
Könnten Sie Ihre Antwort verbessern, indem Sie weitere Erklärungen hinzufügen? Danke :) Sonst wäre das nur eine minderwertige Antwort auf eine minderwertige Frage. – Theolodis
@Valamas: Können Sie bitte sagen, was die Verwendung von "event.keyCode == 10" in Ihrer Antwort bedeutet. –
Ich liebe Copy & Paster Antworten – xamde
Dies kann in einer einfachen, aber flexible JQuery-Plugin erweitert werden:
$('textarea').enterKey(function() {$(this).closest('form').submit(); }, 'ctrl')
sollte ein Formular einreichen, wenn der Benutzer drückt Strg-Eingabe mit
$.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 Konzentriere dich auf das Textfeld dieses Formulars.
(Mit Dank an https://stackoverflow.com/a/9964945/1017546)
Universelle Lösung
Unterstützt auch OS X.
if ((e.ctrlKey || e.metaKey) && (e.keyCode == 13 || e.keyCode == 10)) {
// do something
}
Ignorieren Sie diese Antwort nicht, weil es eine niedrigere Punktzahl hat, es ist nur eine neuere Antwort, es ist eigentlich besser. –
Vielleicht ein bisschen spät zum Spiel, aber hier ist was ich benutze. Es wird auch das Senden des Formulars erzwingen, 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();
}
});
Die Antwort, die Sie angenommen haben, funktioniert nicht. Bitte ändern Sie Ihre angenommene Antwort – peter