2

私はここで途方に暮れています、これまでこれに問題があったことはありません。
どのブラウザでもfocus()を動作させることができません。私はjqueryを使用していますが、標準のjavascriptで動作させることさえできません。タイムアウトも追加してみましたが、まだ何もありません。アラートで受け取るのは「未定義」だけです。

これが入力です

<input type="text" name="SearchBox" id="SearchBox" class="SearchBox" />

これがjqueryです

$(document).ready(function(){
    setTimeout(function(){
        $("#SearchBox").focus();
    }, 0);
    alert($("*:focus").attr("id"));
});

何かが干渉している場合に備えて、ページを上記のように削除しましたが、それでも成功しません。それは私が見逃している単純なものでなければなりません!!!!

4

2 に答える 2

6

ドキュメントレディハンドラーが完了するまで、検索ボックスはフォーカスを取得しません。

を呼び出すとsetTimeout、タイムアウトがゼロに設定されていても、JavaScriptは現在の関数が完了するまでそのタイムアウトを処理しません。これは、JSがシングルスレッドであるためです。

タイムアウトをゼロにして呼び出すsetTimeoutことは、「この関数が完了したら、これを実行してほしい」と言っているようなものです。

したがって、検索ボックスは、が呼び出されるまでフォーカスを取得しませんalert

于 2012-07-05T18:31:57.183 に答える
0

これを試して..

$(document).ready(function(){
    setTimeout(function(){
        $('#SearchBox').focus();
    },0);
    $(":input").focus(function(){
        alert($(this).attr("id"));
    });
});
于 2012-07-05T18:46:16.220 に答える