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

keypress の代わりに keydown を使用する必要があります。Keypress は、char 以外のキーではトリガーされません。

$(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 に答える