Javascript 将多个元素作为单个单元触发onBlur
我有两个输入,它们一起构成一个语义单元(想想一个小时和分钟的输入一起构成一个时间输入)。如果两个输入都失去焦点,我想调用一些Javascript函数,但如果用户只是在这两个输入之间跳转,我不想触发任何东西 我曾尝试将这两个输入包装在一个div中,并向该div添加onBlur,但它从未触发 接下来,我尝试将onBlur添加到两个输入中,并让它们通过jQuery检查另一个的:focus属性,但似乎当onBlur触发时,下一个元素还没有收到focus 对如何实现这一目标有何建议Javascript 将多个元素作为单个单元触发onBlur,javascript,jquery,Javascript,Jquery,我有两个输入,它们一起构成一个语义单元(想想一个小时和分钟的输入一起构成一个时间输入)。如果两个输入都失去焦点,我想调用一些Javascript函数,但如果用户只是在这两个输入之间跳转,我不想触发任何东西 我曾尝试将这两个输入包装在一个div中,并向该div添加onBlur,但它从未触发 接下来,我尝试将onBlur添加到两个输入中,并让它们通过jQuery检查另一个的:focus属性,但似乎当onBlur触发时,下一个元素还没有收到focus 对如何实现这一目标有何建议 编辑:有人质疑这个目的
编辑:有人质疑这个目的。我想根据这两个输入包含的值更新一些其他字段,但理想情况下,如果用户仍在更新第二个输入(例如,如果用户从第一个输入切换到第二个输入),我不想更新其他字段。此行为的目的是什么? 模糊事件在一个场失去焦点时触发,一次只能有一个场获得焦点 例如,在验证的情况下,您可以对两个字段的模糊应用相同的函数,并检查所有字段的值 没有上下文,很难对您提供更多帮助
d、 我在这里举了一个工作示例: 它使用的是:
$('#t1, #t2').blur(function(){
setTimeout(function(){
if(!$('#t1, #t2').is(':focus')){
alert('all good');
}
},10);
});
是的,但由于您只能有一个焦点,您最好使用
true
和false
。如果使用布尔标志,您在一定程度上依赖事件触发顺序。谢谢,这看起来应该可以工作,尽管比我希望的麻烦更多:(问题是,focus是否有机会在超时运行之前启动。非零超时可能是有保证的,零超时取决于JS引擎内部,我对此不太感兴趣。这更多的是一个评论,而不是一个答案。
$('#t1, #t2').blur(function(){
setTimeout(function(){
if(!$('#t1, #t2').is(':focus')){
alert('all good');
}
},10);
});