preventDefault在Chrome或Safari中的页面调度或向下翻页时无效

时间:2015-10-01 15:29:57

标签: javascript jquery javascript-events preventdefault

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

我不是在这里发布完整代码,但我在下面创建了测试代码。无论我尝试什么,当在Chrome或Safari中按下这些键时,页面仍会向上/向下滚动。我不能使用向上,向下,向左或向右键,因为它们用于在每个月内的日期之间导航焦点。

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

        console.log('page down');

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

1 个答案:

答案 0 :(得分:3)

代码有几个问题。

您无法阻止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();
    }
});