Ctrl + Enter jQuery в TEXTAREA

Как вызвать что-то, когда курсор находится в пределах TEXTAREA и Ctrl + Enter? Использование jQuery. Благодаря

Ответ 1

Вы можете использовать флаг event.ctrlKey, чтобы увидеть, нажата ли клавиша Ctrl, что-то вроде этого:

$('#textareaId').keydown(function (e) {

  if (e.ctrlKey && e.keyCode == 13) {
    // Ctrl-Enter pressed
  }
});

Проверьте приведенный выше фрагмент здесь.

Ответ 2

На самом деле этот работает и работает во всех браузерах:

if ((event.keyCode == 10 || event.keyCode == 13) && event.ctrlKey)

ссылка на js fiddle.

Примечания:

  • В Chrome в Windows и Linux enter будет зарегистрирован как keyCode 10, а не 13 (отчет об ошибках). Таким образом, мы должны проверить либо.
  • ctrlKey - это control в Windows, Linux и macOS (не command). Смотрите также metaKey.

Ответ 3

Универсальное решение

Это также поддерживает macOS: будут приняты Ctrl + Enter и ⌘ Command + Enter.

if ((e.ctrlKey || e.metaKey) && (e.keyCode == 13 || e.keyCode == 10)) {
    // do something
}

Ответ 4

Я нашел ответы других либо неполными, либо не совместимыми с кросс-браузером.

Этот код работает с Google Chrome.

$(function ()
{
    $(document).on("keydown", "#textareaId", function(e)
    {
        if ((e.keyCode == 10 || e.keyCode == 13) && e.ctrlKey)
        {
            alert('ctrl+enter');
        }
    });
});

Ответ 5

Это можно расширить до простого, но гибкого плагина JQuery, как в:

$.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);
            }
        })
    })
}

Таким образом,

$('textarea').enterKey(function() {$(this).closest('form').submit(); }, 'ctrl')

должен отправить форму, когда пользователь нажимает ctrl-enter с акцентом на эту форму textarea.

(Благодаря fooobar.com/questions/13437/...)

Ответ 6

сначала нужно установить флаг при нажатии Ctrl, сделать это onkeydown. то вам нужно проверить ввод ключа. отключите флаг, когда вы видите клавиатуру для Ctrl.

Ответ 7

$('my_text_area').focus(function{ set_focus_flag });

//ctrl on key down set flag

//enter on key down = check focus flag, check ctrl flag

Ответ 8

Возможно, немного поздно в игре, но вот что я использую. Он также заставит представить форму, которая является текущей целью курсора.

$(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();
    }
});