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

标签 javascript jquery jquery-events preventdefault

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

我不会在这里发布完整的代码,但我在下面创建了测试代码。无论我尝试什么,当在 Chrome 或 Safari 中按下这些键时,页面仍然向上/向下滚动。我无法使用 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();
    }
});

关于javascript - preventDefault 不适用于 Chrome 或 Safari 中的 pageup 或 pagedown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32891426/

相关文章:

javascript - 如何将 Javascript 文件包含到 shopware5 主题中

jquery - 使用 jquery 从数组列表中添加和删除数组项

jquery - 图像下方的位置按钮

jquery - 如何使用 on() 和 off() 将事件附加到 jQuery 移动页面?

javascript - 使用beforeunload在页面退出前执行任务

返回 1969 年 12 月 31 日的 Javascript Date 对象

javascript - Flexslider 在 html 中加载图像但不呈现任何内容

javascript - 在 1 个 HTML onclick 事件中使用 JS 和 ASP

javascript - jQuery - 如何使用元素的 HTML 获取所有样式/css(在内部/外部文档中定义)

javascript - 使用 JavaScript 或 jQuery 自动填充当前时间