2011-01-25 22 views
5

フォーカスを設定したいテキストボックスがありますが、機能しません。Javascript Focus()関数が動作しない

document.getElementById("txtCity").focus(); 

+0

テキストボックスのhtmlはどのように見えますか? –

+5

'document.getElementById(" txtCity ")'は 'undefined'を返していますか?コンソール内のJavaScriptエラー?どのブラウザですか?要素は実際にフォーカス可能ですか? **より多くのコードを表示してください。** –

+0

IE8を使用しています。ページにエラーはありません。 –

答えて

6

input要素がレンダリングされる前にJavaScriptを呼び出すことがありますか?入力要素をJavaScriptの前に置くか、JavaScriptをトリガーする前にページが読み込まれるまで待ちます。そのためには

は、それだけで正常に動作します:DOMが完全にロードされたときに jQuery

<input type="text" id="test" /> 
<script type="text/javascript"> 
    document.getElementById("test").focus(); 
</script> 

あなたが最初にあなたのコードを実行する.ready()メソッド内にコードを配置できます。

<script type="text/javascript" src="jquery.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
    $("#test").focus(); 
    // document.getElementById("test").focus(); 
    }); 
</script> 
-1

ドキュメントrにラップしてみてくださいあなたはjqueryが含まれていることを確認してください。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 
    <script> 
     $(document).ready(function() { 
      $("#test").focus(); 
     }); 
    </script> 
0
<div id="txtROSComments" contenteditable="true" onkeyup="SentenceCase(this, event)"style="border: 1px solid black; height: 200px; width: 200px;"> 
    </div> 
    <script type="text/javascript"> 
     function SentenceCase(inField, e) { 
      debugger; 
      var charCode; 

      if (e && e.which) { 
       charCode = e.which; 
      } else if (window.event) { 
       e = window.event; 
       charCode = e.keyCode; 
      } 

      if (charCode == 190) { 
       format(); 
      } 
     } 

     function format() { 
      debugger; ; 
      var result = document.getElementById('txtROSComments').innerHTML.split("."); 

      var finaltxt = ""; 


      var toformat = result[result.length - 2]; 

      result[0] = result[0].substring(0, 1).toUpperCase() + result[0].slice(1); 

      if (toformat[0] != " ") { 

       for (var i = 0; i < result.length - 1; i++) { 
        finaltxt += result[i] + "."; 
       } 

       document.getElementById('txtROSComments').innerHTML = finaltxt; 
       alert(finaltxt); 
       abc(); 
       return finaltxt; 
      } 



      if (toformat[0].toString() == " ") { 
       debugger; 
       var upped = toformat.substring(1, 2).toUpperCase(); 

       var formatted = " " + upped + toformat.slice(2); 

       for (var i = 0; i < result.length - 1; i++) { 

        if (i == (result.length - 2)) { 
         finaltxt += formatted + "."; 
        } 
        else { 
         finaltxt += result[i] + "."; 
        } 

       } 
      } 
      else { 
       debugger; 
       var upped = toformat.substring(0, 1).toUpperCase(); 

       var formatted = " " + upped + toformat.slice(1); 



       for (var i = 0; i < result.length - 1; i++) { 
        if (i == (result.length - 2)) { 
         finaltxt += formatted + "."; 
        } 
        else { 
         //if(i 
         finaltxt += result[i] + "."; 
        } 

       } 

      } 
      debugger; 
      document.getElementById('txtROSComments').value = finaltxt; 
      return finaltxt; 

     } 

    </script> 
    <script type="text/javascript"> 
     function abc() { 
      document.getElementById("#txtROSComments").focus(); 
     } 

+0

いくつかのコードを書いても大丈夫ですが、説明を少し追加するといいでしょう。 –

+0

このコードの質問に対する答えを見つける方法がわかりません。 –

2

私もsetTimeout関数でコードを入れて、この問題を解決するには、同じproblem.Toに直面しています。

function showMeOnClick() { 
    // Set text filed focus after some delay 
    setTimeout(function() { jQuery('#searchTF').focus() }, 20); 
    // Do your work..... 
} 
+0

タイムアウトでこれを行うのは、ただちにすばやくです。 – Unknown

+0

はい、タイムアウトを追加するのは、変更を表示するためにDOMを再描画するために、次のtick型のイベントが必要なためです。私たちはこの問題を解決する別の方法を選ぶことができます:-) –

+0

私はオブジェクトのアニメーションが表示されるため、作成したオブジェクトのアニメーションに「アニメーション」リスナーを適用して解決しました。このようにすれば、いったんその場所になるとフォーカスが得られます。 – Unknown

関連する問題