¿Cómo puedo activar algo cuando el cursor está dentro de TEXTAREA y se presiona Ctrl+ Enter? Usando jQuery . Gracias
                92
            
  
            ¿Cómo puedo activar algo cuando el cursor está dentro de TEXTAREA y se presiona Ctrl+ Enter? Usando jQuery . Gracias
Respuestas:
Puede usar la
event.ctrlKeybandera para ver si la Ctrltecla está presionada, algo como esto:$('#textareaId').keydown(function (e) { if (e.ctrlKey && e.keyCode == 13) { // Ctrl-Enter pressed } });Consulte el fragmento anterior aquí .
fuente
10, no13.keypressevento, el código clave será 10, perokeydownokeyupinformará 13. Solo prueba ChromeEn realidad, este hace el truco y funciona en todos los navegadores:
if ((event.keyCode == 10 || event.keyCode == 13) && event.ctrlKey)enlace a js fiddle .
Notas:
keyCode10, no 13 ( informe de error ). Así que tenemos que comprobar cualquiera de los dos.ctrlKeyestá controlen Windows, Linux y macOS (no command). Vea tambiénmetaKey.fuente
ctrlKeycorresponde a la tecla Comando en Mac?if ((e.keyCode == 10 || e.keyCode == 13) && (e.ctrlKey || e.metaKey))Solución universal
Esto también es compatible con macOS: se aceptarán tanto Ctrl+ Entercomo ⌘ Command+ Enter.
if ((e.ctrlKey || e.metaKey) && (e.keyCode == 13 || e.keyCode == 10)) { // do something }fuente
e.ctrlKeydetecta⌃ Controlye.metaKeydetecta⌘ Command. Use esto si desea que tanto Ctrl-Enter como Command-Enter activen el comportamiento.e.keyCodede10significa Ingresar además de13? La documentación de MDNkeyCodeenumera solo13como un valor posible para Enter, probado en múltiples navegadores y sistemas operativos.Encontré respuestas de otros incompletas o no compatibles con varios navegadores.
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'); } }); });fuente
Esto se puede extender a un complemento JQuery simple pero flexible 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-enter con el foco en el área de texto de ese formulario.
(Gracias a https://stackoverflow.com/a/9964945/1017546 )
fuente
$('my_text_area').focus(function{ set_focus_flag }); //ctrl on key down set flag //enter on key down = check focus flag, check ctrl flagfuente
primero tienes que establecer una bandera cuando Ctrlse presiona, haz esto en la tecla entonces tienes que comprobar la tecla de entrar. desarme la bandera cuando vea una tecla para Ctrl.
fuente
Quizás un poco tarde para el juego, pero esto es lo que uso. También forzará el envío del formulario 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(); } });fuente
if...else if" a un soloif (e.ctrlKey && (e.keyCode == 10 || e.keyCode == 13)).