preventDefault 不适用于 Chrome 或 Safari 中的 pageup 或 pagedown

preventDefault doesn't work on pageup or pagedown in Chrome or Safari

我正在努力将键盘控件添加到日期选择器以实现辅助功能。我想使用 pageuppagedown 键在下个月和上个月之间切换。作为代码的一部分,我使用 e.preventDefault 来防止页面仅在日期选择器打开时向上或向下滚动。我可以在 Firefox 和 IE 中使用它,但不能在 Chrome 或 Safari 中使用。

我没有在这里发布完整的代码,但我在下面创建了测试代码。无论我尝试什么,当在 Chrome 或 Safari 中按下这些键时,页面仍然滚动 up/down。我无法使用 updownleftright 键,因为它们用于在每个月的几天之间导航焦点。

$(window).keyup(function(e) {
    console.log(e.keyCode);
    if(e.keyCode === 34) {

        console.log('page down');

        e.preventDefault();
        e.stopPropagation;
        e.stopImmediatePropagation();
        return false;
}

代码有几个问题。

您无法阻止 keyup 上按键的默认操作。到那时代码已经运行。它必须在 keydown.

第二个问题是 keyCode 是整数而不是字符串,因此您的 if 语句不会被输入。

http://jsfiddle.net/ymr744p4/

$(window).keydown(function(e) {
    console.log(e.keyCode);
    if(e.keyCode === 34) {
        console.log('page down');
        e.preventDefault();
    }
});