1

我正在尝试在jQuery中将热键构建到我的 Web 应用程序中。我正在尝试绑定+击键。这是我所拥有的:CtrlU

$(document).keypress(function(e) {
    if(e.ctrlKey && e.which == 117) {
      if($("#nav-user-details").length > 0) {
        $("#nav-user-details").find(".dropdown-menu").toggle();
      }
    }
});

这虽然行不​​通。如何绑定此击键?

谢谢。

4

6 回答 6

3

请试试这个 http://jsfiddle.net/TN7GZ/

Ctrl+ U,屏幕将发出警报。

这将满足您的需求:)

代码

var isCtrl = false;
document.onkeyup=function(e){
    if(e.which == 17) isCtrl=false;
}
document.onkeydown=function(e){
    if(e.which == 17) isCtrl=true;
    if(e.which == 85 && isCtrl == true) {
        //run code for CTRL+U -- ie, whatever!
        alert('CTRL + U stuff');
        return false;
    }
}
​
于 2012-11-15T09:03:47.913 回答
1

我很确定85是 的键码u,还是我遗漏了什么?

如果你也想要 mac 支持(命令键),它可能会变得混乱。我之前写了一个片段可能会对您有所帮助,但它涉及浏览器检测(恶心):

var cmd = false;

$(document).on('keydown', function(e) {

    if(detectMacCommand(e.which)) {
        cmd = true;
        return;
    }

    // now detect print (ctr/cmd + p)
    if ( e.which == 85 && ( e.ctrl || cmd ) ) {
        e.preventDefault();
        alert('ctrl/cmd + u');
    }

}).on('keyup', function(e) {

    if(detectMacCommand(e.which)) {
        cmd = false;
        return;
    }

});

function detectMacCommand(key) {
    return ( $.browser.mozilla && key == 224 ||
             $.browser.opera   && key == 17 ||
             $.browser.webkit  && ( key == 91 || key == 93 ));
}

演示:http: //jsbin.com/afijam/2

于 2012-11-15T09:11:35.227 回答
0

您必须使用 keydown 而不是 keypress。Keypress 不会触发非字符键。

$(document).keydown(function (e) {
  if (e.ctrlKey && e.which === 81) {
    alert("key pressed");
    return false;
  }
});
于 2012-11-15T09:02:36.247 回答
0
$(document).keypress("u",function(e) {
  if(e.ctrlKey)
    alert("Ctrl+U was pressed!!");
});
于 2012-11-15T09:03:16.127 回答
0

尝试这个:

var prevKey = null;
$(document).keydown(function (e) {
  var thisKey = e.which;

  if (prevKey && prevKey == 17) {
    if (thisKey == 85) {
      // Your code.
    }
  }

  prevKey = thisKey;
});
于 2012-11-15T09:04:43.090 回答
0

如果您在Xhtml文件中工作并且遇到错误The entity must immediately follow the &,那么您应该使用&&&而不是&&.

于 2017-06-21T10:34:17.740 回答