webentwicklung-frage-antwort-db.com.de

jquery: Tastendruck, Strg + C (oder eine solche Kombination)

Ich versuche, Verknüpfungen auf der Website, die ich mache, zu erstellen. Ich weiß, dass ich es so machen kann:

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

Das folgende Beispiel ist jedoch einfacher und weniger Code, aber es ist kein kombiniertes Tastendruckereignis:

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

Ich möchte also wissen, ob ich mit diesem zweiten Beispiel etwas tun könnte:

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

ist das möglich? Ich habe es ausprobiert und es hat nicht funktioniert, was mache ich falsch.

48
android.nick

Ein anderer Ansatz (kein Plugin erforderlich) ist die Verwendung von .ctrlKey der Eigenschaft event object , die übergeben wird. Er gibt an, ob Ctrl wurde zum Zeitpunkt der Veranstaltung wie folgt gedrückt:

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

Ich bin ein wenig zu spät zur Party, aber hier ist mein Teil

$(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" );
    }
});
37
Kamran Ahmed

Versuchen Sie stattdessen das Jquery Hotkeys plugin - es wird alles tun, was Sie benötigen.

jQuery Hotkeys ist ein Plug-In, mit dem Sie können leicht Handler für .__ hinzufügen und entfernen. Tastaturereignisse an beliebiger Stelle in Ihrem Code Unterstützung fast jeder Tastenkombination.

Dieses Plugin basiert auf dem Plugin von Tzury Bar Yochay: jQuery.hotkeys

Die Syntax lautet wie folgt:

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

Sie können nicht verwenden Ctrl+C von jQuery, aber Sie können mit einer anderen Bibliothek, die shortcut.js ist

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


});
5
Abdennour TOUMI

Ich konnte nicht mit .keypress () arbeiten, aber es funktionierte mit der Funktion .keydown () so:

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

Für Jquery gibt es ein Plugin namens "Hotkeys", mit dem Sie Tastenkombinationen binden können.

Tut das, was Sie wollen?

Jquery HotKeys - Google Code

1
diagonalbatman
<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
Yakir Manor

Ab 2019 funktioniert dies (mindestens in Chrome)

$(document).keypress(function(e) {
    var key = (event.which || event.keyCode) ;
  if(e.ctrlKey) {
        if (key == 26) { console.log('Ctrl+Z was pressed') ; }
        else if (key == 25) { console.log('Ctrl+Y was pressed') ; }
        else if (key == 19) { console.log('Ctrl+S was pressed') ; }
    else { console.log('Ctrl', key, 'was pressed') ; }
    }
});
0
den232

 enter image description here

$(window).keypress("c", function(e) {
  if (!e.ctrlKey)
    return;

  console.info("CTRL +  C detected !");
});

$(window).keypress("c", function(e) {
  if (!e.ctrlKey)
    return;

  $("div").show();
});
/*https://Gist.github.com/jeromyanglim/3952143 */

kbd {
  white-space: nowrap;
  color: #000;
  background: #eee;
  border-style: solid;
  border-color: #ccc #aaa #888 #bbb;
  padding: 2px 6px;
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
  border-radius: 4px;
  -moz-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.2), 0 0 0 1px #ffffff inset;
  -webkit-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.2), 0 0 0 1px #ffffff inset;
  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.2), 0 0 0 1px #ffffff inset;
  background-color: #FAFAFA;
  border-color: #CCCCCC #CCCCCC #FFFFFF;
  border-style: solid solid none;
  border-width: 1px 1px medium;
  color: #444444;
  font-family: 'Helvetica Neue', Helvetica, Arial, Sans-serif;
  font-size: 11px;
  font-weight: bold;
  white-space: nowrap;
  display: inline-block;
  margin-bottom: 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div style="display:none">
  <kbd>CTRL</kbd> + <kbd>C</kbd> detected !
</div>

0
A-312

In meinem Fall suchte ich nach einer Keydown-Taste und klicke auf event . Meine Jquery sieht folgendermaßen aus: 

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

Dabei ist "linkAccess" der Klassenname für bestimmte Felder, in denen ich einen Link habe, auf den ich mit meiner Tastenkombination zugreifen möchte.

0
LOG Oracle