JQuery: нажатие клавиш, Ctrl + C (или что-то подобное) - PullRequest
50 голосов
/ 05 января 2011

Я пытаюсь создать ярлыки на веб-сайте, который я создаю. Я знаю, что могу сделать это так:

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

Но приведенный ниже пример проще и меньше кода, но это не событие комбинированного нажатия клавиш:

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

Так что я хочу знать, смогу ли я с помощью этого второго примера сделать что-то вроде:

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

это возможно? Я попробовал, и это не сработало, что я делаю не так.

Ответы [ 9 ]

75 голосов
/ 05 января 2011

Другой подход (плагин не нужен) - использовать .ctrlKey свойство объекта события , который передается внутрь. Указывает, было ли Ctrl нажата во время события, как это:

$(document).keypress("c",function(e) {
  if(e.ctrlKey)
    alert("Ctrl+C was pressed!!");
});
40 голосов
/ 03 декабря 2014

Я немного опоздал на вечеринку, но вот моя часть

$(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" );
    }
});
7 голосов
/ 05 января 2011

Попробуйте вместо этого плагин Jquery Hotkeys - он сделает все, что вам нужно.

jQuery Hotkeys - это плагин, который позволяет вы легко можете добавлять и удалять обработчики для события клавиатуры в любом месте вашего кода поддержка практически любой комбинации клавиш.

Этот плагин основан на плагине Цури Бар Йохай: jQuery.hotkeys

Синтаксис следующий:

$(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'); });
5 голосов
/ 19 марта 2013

Вы не можете использовать Ctrl + C от jQuery, но вы можете использовать другую библиотеку, которая shortcut.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");
        });


});
2 голосов
/ 22 января 2018

Я не мог заставить его работать с .keypress (), но он работал с функцией .keydown () так:

$(document).keydown(function(e) {
    if(e.key == "c" && e.ctrlKey) {
        console.log('ctrl+c was pressed');
    }
});
1 голос
/ 20 мая 2012
<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 голос
/ 05 января 2011

Существует плагин для Jquery под названием «Горячие клавиши», который позволяет связывать комбинации клавиш.

Делает ли это то, что вам нужно?

Jquery HotKeys - GoogleКод

0 голосов
/ 30 января 2019

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 голосов
/ 17 ноября 2017

В моем случае я искал клавишу Ctrl и нажатие клавиши.Мой jquery выглядит так:

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

Где "linkAccess" - это имя класса для некоторых конкретных полей, где у меня есть ссылка, и я хочу получить к ней доступ, используя мою комбинацию клавиш и щелчка.

...