JavaScript中Alt、Ctrl和Shift的键码

3
$("#text").bind('keypress', function(e) {
    var code = (e.KeyCode ? e.keyCode : e.which);  
    alert(code);
}

除了 Alt, Ctrl, 或者 Shift,它对其他所有东西都有效。但是在我找到的所有教程中,它应该回显 17、18、19。
为什么呢?
3个回答

4

使用 .keydown().keyup()

查看演示

jQuery(function($){
  var output = $('.output');
  $("#text1").bind('keypress', function(e) {
    var code = (e.KeyCode ? e.keyCode : e.which);  
    output.text(code);
  });
  $("#text2").bind('keydown', function(e) {
    var code = (e.KeyCode ? e.keyCode : e.which);  
    output.text(code);
  });
  $("#text3").bind('keyup', function(e) {
    var code = (e.KeyCode ? e.keyCode : e.which);  
    output.text(code);
  });
  
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
keypress <input type="text" id="text1"> <br>
keydown <input type="text" id="text2"> <br>
keyup <input type="text" id="text3">

<br><br>
Output: <span class="output"></span>


1
你考虑过使用jquery.hotkeys扩展吗?它允许你通过指定字符串来绑定。
"C-A-q" would bind you to: 

Control + Alt + q.


OP没有提到任何组合键 :) - Reigel Gallarde
考虑到他的代码可能会被用于什么,这是一个可行的选择。 :P - Andrew Matthews

0

最好使用console.log来查找它们。您也可以轻松地只使用一个文本框来实现此目的。

$("#textbox").keydown(function(e) {
    console.log("keydown: "+e.keyCode);
});

并且对于keyup和keypress也做同样的操作,以更好地了解它们的工作原理。

顺便说一句:在手机上编写JavaScript确实很难;)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接