Javascript 键控和模糊同时发射
我遇到了一个有趣的问题,在表单元素上使用keyup和blur。我需要允许模糊和关键帧事件从字段冒泡到可以捕获它们的表单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'); }); 问题是,当你们从一个字段中弹出标签时,会触发键控和模糊。这是因为当您从一个字段外进行制表时,模糊事件
$('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,所以我需要做的就是忽略标签!谢谢,这么简单的事。