Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

227
Visualizações
¿Puede jQuery .keypress() detectar más de una tecla al mismo tiempo?

¿Hay alguna forma de que jQuery detecte que se presionó más de una tecla al mismo tiempo?

¿Existe alguna alternativa que permita que se detecte la pulsación de dos teclas a la vez?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Para detectar varias teclas que se mantienen presionadas, use los eventos keydown y keyup .

 var keys = {}; $(document).keydown(function (e) { keys[e.which] = true; }); $(document).keyup(function (e) { delete keys[e.which]; });

He creado una demostración aquí: http://jsfiddle.net/gFcuU/ . Es un poco divertido, aunque noté que mi teclado solo puede detectar un máximo de 6 teclas.

over 4 years ago · Santiago Trujillo Relatório

0

Depende. Para las teclas "normales", eso significa Non- Shift , Ctrl , ALT , ( CMD ), la respuesta es no, el controlador de eventos se activará en una cola, uno tras otro.

Para las teclas modificadoras que mencioné anteriormente, hay una propiedad en el objeto de evento.

Ejemplo:

 $(document).bind('keypress', function(event) { if( event.which === 65 && event.shiftKey ) { alert('you pressed SHIFT+A'); } });

Demostración de jsfiddle .

Otras propiedades son:

  • event.ctrlKey
  • event.altKey
  • event.metaKey
over 4 years ago · Santiago Trujillo Relatório

0

Si solo desea activar un controlador cuando se presionan varias teclas en serie, intente algo como:

 jQuery.multipress = function (keys, handler) { 'use strict'; if (keys.length === 0) { return; } var down = {}; jQuery(document).keydown(function (event) { down[event.keyCode] = true; }).keyup(function (event) { // Copy keys array, build array of pressed keys var remaining = keys.slice(0), pressed = Object.keys(down).map(function (num) { return parseInt(num, 10); }), indexOfKey; // Remove pressedKeys from remainingKeys jQuery.each(pressed, function (i, key) { if (down[key] === true) { down[key] = false; indexOfKey = remaining.indexOf(key); if (indexOfKey > -1) { remaining.splice(indexOfKey, 1); } } }); // If we hit all the keys, fire off handler if (remaining.length === 0) { handler(event); } }); };

Por ejemplo, para disparar en st,

 jQuery.multipress([83, 84], function () { alert('You pressed s-t'); })
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda