以下の内容はhttps://kenpoco.hatenadiary.org/entry/20080426/1209200347より取得しました。


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は実行されるオブジェクトによって変わってしまうので、その対策。




以上の内容はhttps://kenpoco.hatenadiary.org/entry/20080426/1209200347より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14