jquery: keypress, ctrl + c (ou algum combo assim)

Estou tentando criar atalhos no site que estou criando. Eu sei que posso fazer assim:

if(e.which == 17) isCtrl=true; if(e.which == 83 && isCtrl == true) { alert('CTRL+S COMBO WAS PRESSED!') //run code for CTRL+S -- ie, save! e.preventDefault(); } 

Mas o exemplo abaixo é mais fácil e menos código, mas não é um evento de combinação de teclas:

 $(document).keypress("c",function() { alert("Just C was pressed.."); }); 

Então eu quero saber se usando este segundo exemplo, eu poderia fazer algo como:

 $(document).keypress("ctrl+c",function() { alert("Ctrl+C was pressed!!"); }); 

Isso é possível? Eu tentei e não funcionou, o que estou fazendo errado.

Outra abordagem (nenhum plugin necessário) é apenas usar a propriedade .ctrlKey do object de evento que é passado. Isso indica se a tecla Ctrl foi pressionada no momento do evento, assim:

 $(document).keypress("c",function(e) { if(e.ctrlKey) alert("Ctrl+C was pressed!!"); }); 

Estou um pouco atrasado para a festa, mas aqui está a minha parte

 $(document).on('keydown', function ( e ) { // You may replace `c` with whatever key you want if ((e.metaKey || e.ctrlKey) && ( String.fromCharCode(e.which).toLowerCase() === 'c') ) { console.log( "You pressed CTRL + C" ); } }); 

Tente o plugin Jquery Hotkeys em vez disso – ele fará tudo o que você precisa.

O jQuery Hotkeys é um plug-in que permite adicionar e remover facilmente manipuladores para events de teclado em qualquer parte do seu código, suportando praticamente qualquer combinação de teclas.

Este plugin é baseado fora do plugin por Tzury Bar Yochay: jQuery.hotkeys

A syntax é a seguinte:

 $(expression).bind(types, keys, handler); $(expression).unbind(types, handler); $(document).bind('keydown', 'ctrl+a', fn); // eg replace '$' sign with 'EUR' // $('input.foo').bind('keyup', '$', function(){ // this.value = this.value.replace('$', 'EUR'); }); 

Você não pode usar Ctrl + C por jQuery, mas você pode com outra biblioteca que é shortcut.js

Demonstração ao Vivo: Abdennour JSFiddle

 $(document).ready(function() { shortcut.add("Ctrl+C", function() { $('span').html("أحسنت. لقد ضغطت على حرفي : Ctrl+C"); }); shortcut.add("Ctrl+V", function() { $('span').html("أحسنت. لقد ضغطت على حرفي : Ctrl+V"); }); shortcut.add("Ctrl+X", function() { $('span').html("أحسنت. لقد ضغطت على حرفي : Ctrl+X"); }); }); 

Existe um plugin para o Jquery chamado “Hotkeys”, que permite ligar a combinações de teclas para baixo.

Isso faz o que você está depois?

JQuery HotKeys – Google Code

   

No meu caso, eu estava procurando por uma chave ctrl keydown e clique em evento. Meu jquery se parece com isso:

 $('.linkAccess').click( function (event) { if(true === event.ctrlKey) { /* Extract the value */ var $link = $('.linkAccess'); var value = $link.val(); /* Verified if the link is not null */ if('' !== value){ window.open(value); } } }); 

Onde “linkAccess” é o nome da class para alguns campos específicos onde eu tenho um link e quero acessá-lo usando minha combinação de chave e clique.

Eu não consegui fazê-lo funcionar com o .keypress (), mas funcionou com a function .keydown () assim:

 $(document).keydown(function(e) { if(e.key == "c" && e.ctrlKey) { console.log('ctrl+c was pressed'); } });