jQuery按键事件CTRL+S在Chrome浏览器上无法工作?

4
下面的 keypress 事件在 Chrome 和 Safari 上为什么不起作用?在 Firefox 中它运行良好!是否有什么我忽略了对于 Chrome 和 Safari?
$(window).keypress(function(event) {                                       

    if ((event.which == 115 && event.ctrlKey) || (event.which == 19)) {

        // Trigger click.
        $("form input[type=submit][name=update]",object_popup).click();
            alert("Keys down are Ctrl + s + Return");

    } else if ((event.which == 120 && event.ctrlKey) || (event.which == 19)){

        // Trigger click.
        $(".ps-button-close",object_popup).click();
        alert("Keys down are Ctrl + x + Return");

    } else {
        return true;
    }

    event.preventDefault();
    return false;
});

当我使用"ctrl+s"时,Chrome / Safari会回退到默认操作并保存网页,而当我使用"ctrl+x"时,会发出警报声。 jsFiddle演示
1个回答

5

你需要稍微修改你的代码:

$(document).keydown(function(event) {

  var currKey=0,e=e||event; 
  currKey=e.keyCode||e.which||e.charCode;

    if (!( String.fromCharCode(event.which).toLowerCase() == 's' && event.ctrlKey) && !(event.which == 19))  {
       return true; 
    }    

    event.preventDefault();       
    alert("Keys down are Ctrl + s + Return");     
    return false;

}); 

Online Example


你试过将它改为 $(document) 而不是 $(window) 吗? - Ilia
是的,我试过了。还是一样的。现在火狐浏览器也不工作了... 测试1- http://jsfiddle.net/2Letz/3/ 测试2- http://jsfiddle.net/2Letz/4/ - Run
请查看我的更新答案和示例:http://jsfiddle.net/2Letz/15/ - Ilia
还有一件事 - 我如何在那个条件中添加 ctr+x? - Run
1
我能提供的最好方案是将其分成两个不同的按键操作:http://jsfiddle.net/GuWVf/ - Ilia
显示剩余3条评论

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