2 つのテキスト ボックスがあり、どちらも jQuery で処理されるぼかしイベントがあります。テキスト ボックスがぼやけている場合、何らかの検証が行われ、検証が失敗した場合は、テキスト ボックスが再フォーカスされます (ひどい考えだと思いますが、この場合は望ましい動作です)。
Chrome で、最初のテキスト ボックスにフォーカスしてから 2 番目のテキスト ボックスにフォーカスしようとすると、次の順序でイベントが発生することがわかります。
- text1 から発生したフォーカス
- text1 から発射されたぼかし
- text1 から発生したフォーカス
ただし、IE8 では次のように表示されます。
- ログ: text1 から発生したフォーカス
- ログ: text1 から発生したぼかし
- ログ: text1 から発生したフォーカス
- ログ: text2 から発生したフォーカス
- ログ: text2 から発生したぼかし
- ログ: text1 から発生したフォーカス
最初のテキスト ボックスが再フォーカスされた場合に、フォーカス イベントとぼかしイベントが 2 番目のテキスト ボックスで発生しないようにする必要があります。
これは、問題を示すフィドルです。この動作は IE8 でのみ発生します。
追加情報: これらのイベント ハンドラーはすべて個別のプライベート スコープにバインドされているため、2 つのテキスト ボックスは (私が知っている限りでは) 互いのハンドラー関数と対話する方法がありません。