jquery: klawiatura, ctrl + c (lub jakieś combo takie)

Staram się tworzyć skróty na stronie, którą robię. Wiem, że mogę to zrobić w ten sposób:

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

Ale poniższy przykład jest łatwiejszy i mniej kodu, ale nie jest to zdarzenie combo keypress:

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

Więc chcę wiedzieć, czy używając tego drugiego przykładu, mógłbym zrobić coś w stylu:

$(document).keypress("ctrl+c",function() {
  alert("Ctrl+C was pressed!!");
});
Czy to możliwe? Próbowałem i nie zadziałało, co robię źle.
Author: Omar, 2011-01-05

8 answers

Inne podejście (nie potrzebne plugin) to po prostu używać .ctrlKey właściwość obiektu zdarzenia , który zostanie przekazany. Oznacza to, czy Ctrl zostało naciśnięte w czasie zdarzenia, w następujący sposób:

$(document).keypress("c",function(e) {
  if(e.ctrlKey)
    alert("Ctrl+C was pressed!!");
});
 70
Author: Nick Craver,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-05 12:44:36

Jestem Mały spóźniony na imprezę, ale oto moja część

$(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
Author: Kamran Ahmed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-23 13:46:48

Spróbuj zamiast tego jQuery Hotkeys plugin-zrobi wszystko, czego potrzebujesz.

JQuery Hotkeys to wtyczka pozwalająca łatwo dodajesz i usuwasz programy obsługi dla zdarzenia klawiatury w dowolnym miejscu kodu obsługa prawie każdej kombinacji klawiszy.

Ta wtyczka jest oparta na wtyczce autor: jQuery.hotkeys

Składnia jest następująca:

$(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
Author: Andy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-05 12:41:53

Nie możesz użyć Ctrl+C przez jQuery, ale możesz użyć innej biblioteki, która jest skrótem .js

Live Demo : 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
Author: Abdennour TOUMI,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-16 17:08:39

Istnieje wtyczka do Jquery o nazwie "Hotkeys", która pozwala powiązać kombinacje klawiszy.

Czy to robi to, czego szukasz?

JQuery HotKeys-Google Code

 1
Author: diagonalbatman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
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
Author: Yakir Manor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-20 10:20:03

Nie mogłem tego zrobić .keypress (), ale działało z .funkcja keydown () wygląda tak:

$(document).keydown(function(e) {
    if(e.key == "c" && e.ctrlKey) {
        console.log('ctrl+c was pressed');
    }
});
 1
Author: Chris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-22 16:39:59

W moim przypadku Szukałem klawisza Ctrl i kliknąłem event. Mój jquery wygląda tak:

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

Gdzie "linkAccess" to nazwa klasy dla niektórych konkretnych pól, w których mam link i chcę uzyskać do niego dostęp za pomocą kombinacji klawisza i kliknięcia.

 0
Author: LOG Oracle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-17 12:03:02