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.
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!!");
});
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" );
}
});
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'); });
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");
});
});
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?
<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>
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');
}
});
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.