Pregunta

¿Cómo puedo activar algo cuando el cursor se encuentra dentro de TEXTAREA y Ctrl + Intro se presiona? Con jQuery . Gracias

¿Fue útil?

Solución

Puede usar la bandera event.ctrlKey para ver si el Ctrl se presiona llave, algo como esto:

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

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

Compruebe el fragmento anterior aquí .

Otros consejos

En realidad, éste es el truco y funciona en todos los navegadores:

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

js violín .

Notas:

  • En Chrome en Windows y Linux, introduzca serían registrados como keyCode 10, No 13 ( insecto informe). Por lo que necesitamos para comprobar si hay tampoco.
  • ctrlKey es Control en Windows, Linux y macOS (no comando ). Ver también metaKey .

Solución universal

Compatible con OS X, así, es decir, tanto el control + introduzca y comando + introduzca debería funcionar .

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

He encontrado respuestas de otros, ya sea incompleto o no entre navegadores compatibles.

Este código funciona Google Chrome.

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

Esto puede extenderse a una simple y flexible, pero-plugin JQuery como en:

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

Así

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

debe presentar un formulario cuando el usuario presiona Ctrl-Enter con el foco en área de texto de esa forma.

(Con agradecimiento a https://stackoverflow.com/a/9964945/1017546 )

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

//ctrl on key down set flag

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

primero hay que establecer un indicador cuando Ctrl es presionado, hacer esto onkeydown. entonces usted tiene que comprobar el keydown de entrar. desarmar el indicador cuando se ve un keyup para Ctrl .

Tal vez un poco tarde al juego, pero aquí es lo que uso. También obligará a presentar de la forma que es el objetivo actual del 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();
    }
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top