2009-11-05 17 views
69

¿Cómo puedo activar algo cuando el cursor está dentro TEXTAREA y Ctrl +Introduzca se presiona? Usando jQuery. GraciasCtrl + Enter jQuery en el área de texto

+0

la respuesta que ha aceptado no funciona. Cambie su respuesta aceptada – peter

Respuesta

101

Usted puede utilizar el indicador event.ctrlKey para ver si se pulsa la tecla Ctrl , algo como esto:

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

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

Comprobar el fragmento here anteriormente.

+11

Esto no funciona en Google Chrome. Cuando se presiona Ctrl + Enter, el código de tecla es '10', no' 13'. – Znarkus

+30

Esto no funciona. La solución de Yarolslav Yakovlev a continuación funciona correctamente. Por favor, cambie la respuesta aceptada para ahorrarle tiempo a la gente. –

+0

No funciona en Opera también. –

0

primero tiene que establecer una bandera cuando se presiona Ctrl, haga esto onkeydown. entonces debes verificar la clave de enter. desactive la bandera cuando vea una combinación de teclas para Ctrl.

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

//ctrl on key down set flag 

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

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

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

enlace a js fiddle

+0

El violín no funciona en Firefox 27, ¿qué ocurre? – CoDEmanX

+0

Simplemente llame add 'event':' if ((event.keyCode == 10 || event.keyCode == 13) && event.ctrlKey) ' – terales

+2

@Yaroslav: ¿Puede decirnos cuál es el uso de" event.keyCode == 10 "en tu respuesta. –

4

encontré respuestas de otros, ya sea incompleto o no entre navegadores compatibles.

Este código funciona en google chrome.

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

¿Podría considerar mejorar su respuesta agregando más explicaciones? Gracias :) De lo contrario, esta sería una respuesta de baja calidad a una pregunta de baja calidad. – Theolodis

+0

@Valamas: ¿Puedes decir cuál es el uso de "event.keyCode == 10" en tu respuesta? –

+0

Me encantan las respuestas de copiar y pegar – xamde

2

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 enviar un formulario cuando el usuario presiona ctrl-entrar con centrarse en el área de texto de esa forma.

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

27

solución universal

Soporta OS X también.

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

No ignore esta respuesta porque tiene un puntaje más bajo, es solo una respuesta más nueva, en realidad es mejor. –

0

Tal vez un poco tarde para el juego, pero esto es lo que uso. También forzará el envío 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(); 
    } 
}); 
Cuestiones relacionadas