Javascriptでフォーカスを移動させないようにする方法

ブラウザ(FireFox)上での書式チェックエラーのときに、次の項目にフォーカスを移動させないようにする方法。簡単にできると思ったら意外と苦戦(IE6のときは簡単にできたような気がするのだが)。


<input type="text" onblur="if (any expression) { this.focus(); return false; }" />

上記コードは、まず最初に思いついたものなのですが、これだとなぜかフォーカスが次の項目に移動してしまいます。
調べてみると、blurイベントの中でfocusイベントを発生させることはできない、みたいな情報がありました。
なので解決策としては、フォーカスの移動を時間差(別スレッド?)でしてやること。


<input type="text" onblur="if (any expression) { obj = this; setTimeout(function(){ obj.focus(); }, 1); }" />

これでうまくいきました。obj = this; は、Javascriptクロージャでは、thisは実行されるオブジェクトによって変わってしまうので、その対策。