这个也是上礼拜印度队友给我留的“作业”,今天搞定了。场景是某个页面,用户输入内容后,希望按Ctrl+S直接提交保存。也就是要用Ctrl+S去触发保存按钮的Click事件。然而在浏览器中,Ctrl+S默认是保存网页(Firefox下就是这样),所以需要写一个可以覆盖浏览器自身快捷键的脚本,去触发按钮事件。

我写了个最简单的Demo,效果如下:点击Button后,会显示一句话以及触发时间。现在需要用Ctrl+S来触发这个事件。注意,先得引入JQuery库。

第一种方法是:

$(window).keypress(function (event) {
    if (!(event.which == 115 && event.ctrlKey) && !(event.which == 19)) {
        return true;
    }

    $('#Button1').click();

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

第二种方法(更加通用):采用jquery.hotkeys.js,引入这个JS库后,代码更加简单明了,并且你可以很轻松的绑定任意键和组合键。

function bindKey() {
    jQuery.hotkeys.add('Ctrl+s', function () {
        $('#Button1').click();
    });
}

$(document).ready(bindKey);

注意,用jquery.hotkeys.js的时候,使用alert调试,是不会覆盖浏览器自身快捷键的,千万不要以为功能不好用。如果去掉alert,一切正常。