preventDefault 不适用于 Chrome 或 Safari 中的 pageup 或 pagedown
preventDefault doesn't work on pageup or pagedown in Chrome or Safari
我正在努力将键盘控件添加到日期选择器以实现辅助功能。我想使用 pageup 和 pagedown 键在下个月和上个月之间切换。作为代码的一部分,我使用 e.preventDefault
来防止页面仅在日期选择器打开时向上或向下滚动。我可以在 Firefox 和 IE 中使用它,但不能在 Chrome 或 Safari 中使用。
我没有在这里发布完整的代码,但我在下面创建了测试代码。无论我尝试什么,当在 Chrome 或 Safari 中按下这些键时,页面仍然滚动 up/down。我无法使用 up、down、left 或 right 键,因为它们用于在每个月的几天之间导航焦点。
$(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 语句不会被输入。
$(window).keydown(function(e) {
console.log(e.keyCode);
if(e.keyCode === 34) {
console.log('page down');
e.preventDefault();
}
});
我正在努力将键盘控件添加到日期选择器以实现辅助功能。我想使用 pageup 和 pagedown 键在下个月和上个月之间切换。作为代码的一部分,我使用 e.preventDefault
来防止页面仅在日期选择器打开时向上或向下滚动。我可以在 Firefox 和 IE 中使用它,但不能在 Chrome 或 Safari 中使用。
我没有在这里发布完整的代码,但我在下面创建了测试代码。无论我尝试什么,当在 Chrome 或 Safari 中按下这些键时,页面仍然滚动 up/down。我无法使用 up、down、left 或 right 键,因为它们用于在每个月的几天之间导航焦点。
$(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 语句不会被输入。
$(window).keydown(function(e) {
console.log(e.keyCode);
if(e.keyCode === 34) {
console.log('page down');
e.preventDefault();
}
});