我有两个文本框,都通过jQuery处理模糊事件。当文本框模糊时,会进行一些验证,如果验证失败,则重新聚焦文本框(一个可怕的想法,我知道,但在这种情况下这是期望的行为)。
在Chrome中,如果你将焦点放在第一个文本框上,然后尝试将焦点放在第二个上,你会看到以下事件发生的顺序:
1. 来自 text1 的焦点事件。 2. 来自 text1 的模糊事件。 3. 来自 text1 的焦点事件。
然而,在 IE8 中,您会看到以下内容:
1. 日志:来自 text1 的焦点事件。 2. 日志:来自 text1 的模糊事件。 3. 日志:来自 text1 的焦点事件。 4. 日志:来自 text2 的焦点事件。 5. 日志:来自 text2 的模糊事件。 6. 日志:来自 text1 的焦点事件。 我需要能够防止第一个文本框被重新聚焦时第二个文本框触发焦点和模糊事件。 这里是一个演示问题的fiddle。此行为只在IE8中发生。
更多信息:所有这些事件处理程序都绑定在单独的私有作用域中,因此两个文本框没有任何方式(据我所知)与彼此的处理程序函数交互。
在Chrome中,如果你将焦点放在第一个文本框上,然后尝试将焦点放在第二个上,你会看到以下事件发生的顺序:
1. 来自 text1 的焦点事件。 2. 来自 text1 的模糊事件。 3. 来自 text1 的焦点事件。
然而,在 IE8 中,您会看到以下内容:
1. 日志:来自 text1 的焦点事件。 2. 日志:来自 text1 的模糊事件。 3. 日志:来自 text1 的焦点事件。 4. 日志:来自 text2 的焦点事件。 5. 日志:来自 text2 的模糊事件。 6. 日志:来自 text1 的焦点事件。 我需要能够防止第一个文本框被重新聚焦时第二个文本框触发焦点和模糊事件。 这里是一个演示问题的fiddle。此行为只在IE8中发生。
更多信息:所有这些事件处理程序都绑定在单独的私有作用域中,因此两个文本框没有任何方式(据我所知)与彼此的处理程序函数交互。
blur1 focus1 focus2
但是1无法重新获得焦点(FF17)。 - Fabrício MattésetTimeout(function() { $('#text1').focus(); }, 0);
很丑陋,但会触发第二个文本框的事件并将其处理好。 - Fabrício Matté