jQuery 选择器排除事件中的其他元素

jQuery selector excluding other elements in events

我有一个表单,我想在用户按 Enter 时阻止提交它 但是我想排除这个 "rule".

的 3 个输入

这样做我可以在按下 Enter 时阻止提交事件:

  $(document).keydown(function(event){
    if(event.keyCode == 13) {
      event.preventDefault();
      return false;
    }
  });

但是我如何从这个规则中排除我的三个输入?

这是我尝试过的:

  $(document).not("#input1", "#input2", "#input3").keydown(function(event){
    if(event.keyCode == 13) {
      event.preventDefault();
      return false;
    }
  });

还有这个:

  $(document).keydown(function(event){
    if(event.keyCode == 13) {
      if ($(event.target).is('#input1') == false || $(event.target).is('#input2') == false || $(event.target).is('#input3') == false) {
        event.preventDefault();
        return false;
      }
    }
  });

我的真正意图是防止在除这三个输入之外的所有输入上输入,但是当在其中一个输入中按下 Enter 时,我喜欢 运行 a trigger().

测试目标是否是您要排除的元素之一。如果这是真的,return 立即来自处理程序。您还需要调用 event.stopPropagation(),否则事件将冒泡到其他不属于排除元素的元素。

$(document).keydown(function(event) {
    if (event.keyCode == 13) {
        if ($(event.target).is("#input1,#input2,#input3")) {
            event.stopPropagation();
            return;
        }
        event.preventDefault();
        return false;
    }
}