- ベストアンサー
FireFoxでfocus()が上手く動かない
javascriptを使って、 フォームのテキストエリアの入力文字数をチェックし、 オーバーしていれば、アラートを出し、テキストエリアにフォーカスを移動させる。 ようにしようとしています。 IEでは動いてのですが、FireFoxだと上手くフォーカスが移動してくれません。 どこがまずいのか、教えてください。 コード <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <script type="text/javascript"> <!-- function checkText(aText) { if (aText.value.length > 1) { alert('サイズオーバーです'); aText.focus(); } } //--> </script> </head> <body> <form method="post" action="#"> <input type="text" name="fmTitle" onBlur="checkText(this)"> <input type="text" name="dummy"> </form> </body> </html>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
要するに、イベント中に別イベントが発生するのがよろしくないのだと思います。 泥臭い対処ですが、イベントが終了してから実行するような感じでどうでしょうか ---------------------------------------------------------------- var TimeID=null; function setFocus(fn){ clearTimeout(TimeID); document.forms[0][fn].focus(); document.forms[0][fn].value +=""; } function checkText(aText){ if (aText.value.length > 1) { alert('サイズオーバーです'); //aText.focus(); // TimeID=setTimeout("setFocus('fmTitle')",300);//時間を置いて実行する TimeID=setTimeout("setFocus('"+ aText.name + "')",300); } }
その他の回答 (2)
- lamp_tomori
- ベストアンサー率56% (9/16)
こんばんは。 Firefoxでのエラーとのことですが、現在FireFoxでは.Focus()イベントでエラーが出ることが確認されているようです。Firefoxは未使用なのでこちらでは確認できませんが日本語で書かれているページがありましたので参考URLもご確認ください。
お礼
ご回答ありがとうございます。 #3さんの方法で、解決しました。 が、focus()は気をつけた方がよさそうですね。
- himajin100000
- ベストアンサー率54% (1660/3060)
http://mrmx.blogspot.com/2005/12/javascript-firefox-onblur-focus.html 読んでませんがFirefox側のバグかもしれません calling this.blur() in onfocus handler or this.focus() in an onblur handler do not work https://bugzilla.mozilla.org/show_bug.cgi?id=53579
お礼
ありがとうございます。 せっかく教えていただいたのですが、 英語はちょっと。。。です。 私の手におえなさそうなので、 別チェック方法を考えようかと思います。
お礼
解決しました。 ありがとうございます。