Jquery 如何按数字上方的星键

Jquery 如何按数字上方的星键,jquery,events,keyboard,Jquery,Events,Keyboard,问题:如何找到数字上方的星星 My当前未检测到键盘上数字行上方的*-仅检测到数字键盘上的* 在我的键盘上是shift-3,所以键盘编码是51+shift。我如何测试*而不管我点击了什么来获得它 我不太确定你发布的密码。 使用此代码,当我按下*时,我得到56 <script type="text/javascript"> document.addEventListener('keydown', function( event ) { console.

问题:如何找到数字上方的星星

My当前未检测到键盘上数字行上方的*-仅检测到数字键盘上的*


在我的键盘上是shift-3,所以键盘编码是51+shift。我如何测试*而不管我点击了什么来获得它

我不太确定你发布的密码。 使用此代码,当我按下
*
时,我得到
56

<script type="text/javascript">
    document.addEventListener('keydown', function( event ) { 
             console.log(event.keyCode); });
</script>

document.addEventListener('keydown',函数(事件){
console.log(event.keyCode);});

对于检测特定字符而言,
keydown
keydup
事件是不可靠的,因为这些事件的属性是而不是字符代码

必须使用
按键
事件。按下一个键时,此事件可能会触发多次。因此,在按下所需键时设置一个标志,并移除
keyup
上的标志

演示:
function something\u to\u do(){
//当按下*时,此功能启动。
$('Pressed*!')。appendTo('body')
}
$('body')。按键(功能(e){
var$this=$(this);
如果(e.which==42){/'*'.charCodeAt(0)==42
如果(!$this.data('rw\u star\u pressed')){
$this.data('rw_star_pressed',true);
要做的事;
}
}
}).keyup(函数(){
$(此).removeData('rw_star_pressed');
});

转换
事件。使用
字符串.fromCharCode
转换
事件只在
按键
事件时可靠。我看到它检测
*
。但问题是,它也会将
8
检测为
*
@RobW,但只有当所有键盘都为键上的字符返回相同的数字时,这种方法才有效。在我的情况下是51,在我们身上是56@mplungjan不,它不起作用。
keydown
keydup
事件返回按键的代码,而不是按下的字符的代码
8和
*
将返回相同的keycode->
事件。正如我前面提到的,只有
keypress
事件可以依赖。@RobW所以请发布一个我知道的示例。我在瑞士-德国键盘上得到51,所以不是答案。在OSX上的小提琴,我在*上得到56,8,比我的8高,在工作中会超过3。我在数字键盘上得到106。看来你的代码贴在这里工作。我需要看看我是否按了ctrl-*too@mplungjanOops错误的演示链接。编辑后的回答:你也可以添加ctrl-*吗?我找到了e.ctrlKey,所以不需要修复这个问题。我来看看我在这里接受你的另一个问题。我喜欢另一个问题中给出的next()方法。谢谢
function something_to_do() {
    // This function is fired when * is pressed.
    $('<div>Pressed *!</div>').appendTo('body')
}
$('body').keypress(function(e) {
    var $this = $(this);
    if (e.which === 42) { // '*'.charCodeAt(0) === 42
        if (!$this.data('rw_star_pressed')) {
            $this.data('rw_star_pressed', true);
            something_to_do();
        }
    }
}).keyup(function() {
    $(this).removeData('rw_star_pressed');
});