如何防止空格键的默认操作(内部输入除外)



默认情况下,当我们在document上按下空格键时,它会向下滚动。为了防止默认行为,我们可以做以下操作:

$(document).keypress(function(event) {
   event.preventDefault();
});

但是,当我们有特定的输入字段时,我们不能执行上述操作,因为它不允许我们在文本字段中键入。

我怎么能在不侵犯他人权利的情况下阻止空格键的默认操作呢!

您可以:

  1. 检查event.target以查看它是否是一个输入元素,如果它是
  2. 将事件处理程序绑定到停止传播的输入元素

不过,我一开始不会破坏正常的滚动功能。

我最近遇到了同样的问题。显然,我是这样解决的:

$(document).keypress(function(event) {
    if (
        ['input', 'textarea', 'select', 'button']
        .indexOf(document.activeElement.tagName.toLowerCase()) == -1
    ) {
        // Current focused element is NOT an input. Let's prevent scroll!
        event.preventDefault();
        // Now we can do various stuff.
    } else {
        // User is typing something into a focused input.
        // Do NOT do anything here.
    }
}

最新更新