Javascript 键控和模糊同时发射

Javascript 键控和模糊同时发射,javascript,jquery,Javascript,Jquery,我遇到了一个有趣的问题,在表单元素上使用keyup和blur。我需要允许模糊和关键帧事件从字段冒泡到可以捕获它们的表单 $('form').on('focusout submit keyup', function(e) { console.log($(e.target).attr('id')); $(e.target).css('background','red'); }); 问题是,当你们从一个字段中弹出标签时,会触发键控和模糊。这是因为当您从一个字段外进行制表时,模糊事件

我遇到了一个有趣的问题,在表单元素上使用keyup和blur。我需要允许模糊和关键帧事件从字段冒泡到可以捕获它们的表单

$('form').on('focusout submit keyup', function(e) {
    console.log($(e.target).attr('id'));
    $(e.target).css('background','red');
});

问题是,当你们从一个字段中弹出标签时,会触发键控和模糊。这是因为当您从一个字段外进行制表时,模糊事件会在该字段上触发,但当您提起关键帧时,您已经在新字段中,因此也会为此触发keyup事件


我一直在试图找到一个好的解决方案……我想到了一个非常糟糕的解决方案,它包括在每个字段中添加一个focusin/focus事件。如果某个字段获得焦点,则在dom中查找下一个字段,并向其添加一个类以将其标记为“第一次按键时不验证”。但这似乎是一个坏主意

如果您指的是按键盘上的tab键,在这种情况下,tab也是键,因此它将触发keyup事件。请尝试以下操作以检测选项卡:

$('form').on('keyup focusout submit', function(e) {
    if (e.keyCode == 9) {
       //tab was pressed do something else, set a flag to true perhaps
    } else {
       console.log($(e.target).attr('id'));
       $(e.target).css('background','red');
    }
});

如果您的意思是按键盘上的tab键向外切换,在这种情况下,tab也是键,因此它将触发keyup事件。请尝试以下操作以检测选项卡:

$('form').on('keyup focusout submit', function(e) {
    if (e.keyCode == 9) {
       //tab was pressed do something else, set a flag to true perhaps
    } else {
       console.log($(e.target).attr('id'));
       $(e.target).css('background','red');
    }
});

您需要通过检查
e.keyCode!=9
并防止任何事情发生

这应该适合您:

$('form').on('keyup focusout submit', function(e) {
  if (e.keyCode != 9) {
    console.log($(e.target).attr('id'));
    $(e.target).css('background','red');
  }
});

您需要通过检查
e.keyCode!=9
并防止任何事情发生

这应该适合您:

$('form').on('keyup focusout submit', function(e) {
  if (e.keyCode != 9) {
    console.log($(e.target).attr('id'));
    $(e.target).css('background','red');
  }
});

tab键是键否?是的,假设总是tab键导致模糊…因此,也许我可以假设如果tab键触发事件,那么它就是一个模糊事件…也许我可以设置一个有模糊事件的标志,然后不允许下一个keyup触发事件…这就是你的意思吗?看到我的答案了吗?tab键是键否?是的假设总是tab键导致模糊…因此,也许我可以假设如果tab键触发事件,那么它就是一个模糊事件…也许我可以设置一个有模糊事件的标志,然后不允许下一个keyup触发事件…这就是你的意思吗?请参阅我的答案不幸的是,这不是问题的解决方案。看这里。事件仍然会在您制表符移出的字段和获得焦点的字段上触发。我必须停止。你赢了我!当
e.keyCode!=9
,否则按下tab键时仍会触发键控和模糊。现在,它只添加特定于选项卡的代码,而不是将其排除。@Jashwant-您的代码不起作用-我正在处理类似的东西。@Cimphon我假设OP可以添加其他代码(case:),但更新了我的代码不幸的是,这不是问题的解决方案。看这里。事件仍然会在您制表符移出的字段和获得焦点的字段上触发。我必须停止。你赢了我!当
e.keyCode!=9
,否则按下tab键时仍会触发键控和模糊。现在,它只添加特定于选项卡的代码,而不是将其排除。@Jashwant-您的代码不起作用-我正在处理类似的东西。@Cimphon我以为OP可以添加其他代码(case:),但更新了我的代码当然可以。我正在使用focusout,所以我需要做的就是忽略标签!谢谢,这么简单。啊,当然可以。我正在使用focusout,所以我需要做的就是忽略标签!谢谢,这么简单的事。