jquery: нажатие клавиши, ctrl+c (или какая-то комбинация)

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

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

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

8 ответов


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

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

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

$(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 плагин вместо этого-он будет делать все, что вам нужно.

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

этот плагин основан на плагин by Tzury Bar Yochay: jQuery.горячие клавиши

синтаксис:

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

вы не можете использовать Ctrl+C по jQuery, но вы можете с другой библиотекой, которая ярлык.js

Демо : 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");
        });


});

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

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

Горячие Клавиши Jquery-Код Google


<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>

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

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

в моем случае я искал клавишу ctrl keydown и нажмите событие. Мой 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" - это имя класса для некоторых конкретных полей, где у меня есть ссылка, и я хочу получить к ней доступ, используя комбинацию клавиш и щелчка.