jquery:keypress,ctrl + c(或类似的一些组合)

and*_*ick 51 jquery keypress keydown jquery-events

我正在尝试在我正在制作的网站上创建快捷方式.我知道我可以这样做:

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();
}
Run Code Online (Sandbox Code Playgroud)

但下面的示例更容易,代码更少,但它不是组合键按压事件:

$(document).keypress("c",function() {
  alert("Just C was pressed..");
});
Run Code Online (Sandbox Code Playgroud)

所以我想知道如果通过使用第二个例子,我可以做类似的事情:

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

这可能吗?我试过了它并没有用,我做错了什么.

Nic*_*ver 75

另一种方法(不需要插件)它只使用传入.ctrlKey事件对象的属性.它表示Ctrl在事件发生时是否按下了,如下所示:

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

  • 按下control + ANY键时将触发此功能.`keypress`只是忽略了第一个参数.您需要比较`e.which`以确定实际按下了哪个键. (7认同)
  • @ android.nick - 不是内置的jQuery核心,不,你需要一个**的插件,但是对于ctrl,alt和shift键,你可以只使用`.ctrlKey`,`.altKey`和` .shiftKey`属性. (6认同)

Kam*_*med 41

有点迟到了,但这是我的一部分

$(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" );
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 这对我来说使用jQuery 1.11.2.接受的答案没有. (6认同)
  • 同意这个方法在更高版本的jQuery中更好用 (2认同)
  • Mac的⌘是e.metaKey所以`(e.metaKey || e.ctrlKey)&& ...`为我工作 (2认同)

And*_*ndy 7

试试Jquery Hotkeys插件 - 它会完成你需要的一切.

jQuery Hotkeys是一个插件,可让您轻松添加和删除代码中任何位置的键盘事件处理程序,几乎支持任何组合键.

这个插件基于Tzury Bar Yochay的插件: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'); });
Run Code Online (Sandbox Code Playgroud)

  • +1虽然绑定Ctrl + C或任何其他预定义的热键组合是不好的做法.小心轻放. (2认同)

小智 6

我无法让它与 .keypress() 一起使用,但它可以与 .keydown() 函数一起使用,如下所示:

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


Abd*_*UMI 5

您不能通过jQuery 使用Ctrl+ C,但是可以与另一个快捷方式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");
        });


});
Run Code Online (Sandbox Code Playgroud)