jquery: touche ctrl+c (ou certains combo comme ça)

j'essaie de créer des raccourcis sur le site que je crée. Je sais que je peux le faire de cette façon:

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();
}

mais l'exemple ci-dessous est plus facile et moins de code, mais ce n'est pas un événement de clavier combo:

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

alors je veux savoir si en utilisant ce second exemple, je pourrais faire quelque chose comme:

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

est-ce possible? Je l'ai essayé et ça ne fonctionne pas, ce que je fais mal.

44
demandé sur Omar 2011-01-05 15:40:06

8 réponses

une autre approche (pas de plugin nécessaire) il suffit d'utiliser .ctrlKey propriété de l' objet événement qui est transmis. Il indique si Ctrl a été pressé au moment de l'événement, comme ceci:

$(document).keypress("c",function(e) {
  if(e.ctrlKey)
    alert("Ctrl+C was pressed!!");
});
70
répondu Nick Craver 2011-01-05 12:44:36

je suis peu fin de la partie, mais voici ma partie

$(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" );
    }
});
31
répondu Kamran Ahmed 2016-06-23 13:46:48

Jquery Raccourcis Clavier plugin à la place - il fera tout ce dont vous avez besoin.

jQuery Hotkeys est un plug-in qui permet vous ajoutez et supprimez facilement des handlers pour les événements de clavier n'importe où dans votre code prise en charge de presque n'importe quelle combinaison de clés.

Ce plugin est basé sur le plugin par Tzury Bar Yochay: jQuery.les raccourcis clavier

La syntaxe est comme suit:

$(expression).bind(types, keys, handler); $(expression).unbind(types, handler);

$(document).bind('keydown', 'ctrl+a', fn);

// e.g. replace '$' sign with 'EUR'
// $('input.foo').bind('keyup', '$', function(){   
//      this.value = this.value.replace('$', 'EUR'); });
6
répondu Andy 2011-01-05 12:41:53

Vous ne pouvez pas utiliser Ctrl+C par jQuery, mais vous pouvez avec une autre bibliothèque qui est raccourci.js

Démo En Live : 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");
        });


});
3
répondu Abdennour TOUMI 2017-09-16 17:08:39

il y a un plugin pour Jquery appelé "Hotkeys" qui vous permet de vous lier à des combinaisons de touches vers le bas.

est-ce que cela fait ce que vous recherchez?

Jquery Touches De Raccourci - Google Code

1
répondu diagonalbatman 2011-01-05 12:44:25
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type='text/javascript'>
    var ctrlMode = false; // if true the ctrl key is down
    ///this works
    $(document).keydown(function(e){
    if(e.ctrlKey){
        ctrlMode = true;
    };
    });
    $(document).keyup(function(e){
    ctrlMode = false;
    });
</script>
1
répondu Yakir Manor 2012-05-20 10:20:03

je ne pouvais pas le faire fonctionner avec .keypress(), mais il a travaillé avec le .keydown() la fonction comme ceci:

$(document).keydown(function(e) {
    if(e.key == "c" && e.ctrlKey) {
        console.log('ctrl+c was pressed');
    }
});
1
répondu Chris 2018-01-22 16:39:59

dans mon cas, je cherchais un événement clé Ctrl keydown et click. Mon jquery ressemble à ceci:

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

où "linkAccess" est le nom de classe pour certains champs spécifiques où j'ai un lien et je veux y accéder en utilisant ma combinaison de touche et de clic.

0
répondu LOG Oracle 2017-11-17 12:03:02