0
<DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr" lang="en">
<head>
    <script src="../js/third_party/jq142unmin.js"></script>
    <script>
        $(document).ready( function(){
            $("#set_focus1").click(function(){
                console.log($("#input1").focus());
            });
            $("#set_focus2").click(function(){
                console.log($("#input2").focus());
            });
        });
    </script>
</head>
<body>
    <input id="input1"></input>
    <input id="input2"></input>
    <button id="set_focus1">Set Focus1</button>
    <button id="set_focus2">Set Focus2</button>
</body>
</html>

ここに画像の説明を入力

コード自体は、私が思うように機能します。たとえば、ボタンをクリックすると、どちらかの入力にフォーカスが設定されます。しかし、コンソールから同じことを試しても効果はありません (エラー メッセージは表示されず、何もしません)。上記のように、いくつかの異なる方法で試しました。

これらの入力要素でコンソールから実行される他の jQuery 関数。$("#input1").val("foo")、期待どおりに動作します。focus() の違いは何ですか?

4

2 に答える 2

1

これを再現しましたが、これはエラーではなく、単純にブラウザーが入力を処理する方法です。開発者ツールを使用している間、ページにはレチクルがないため、別の要素に渡されていません。

要素は実際に「フォーカス」されます。これをブラウザで実行すると、focus()イベントが発生することがわかりますが、別のウィンドウに注意を向けていると、ブラウザは強制的にそのページに移動しません。

$("#input1").on("focus", function(){  alert("focused")  });
$("#input1").focus();

これにより、アラートがトリガーされます。

于 2013-01-23T20:26:35.093 に答える
0

コンソールはブラウザ ウィンドウから分離されています。そのため、コンソールでいくつかのコマンドを実行すると、フォーカスが HTML ウィンドウに移動しません。そのため、期待した結果が得られません。

$("#input1").val("foo")DOM要素の値を設定しています。したがって、値が変更され、カーソルがコンソールに保持されます。

検証$("#input1").focus()するには、フォーカス イベントにアラートを配置し、コンソールからイベントを呼び出します。

于 2013-01-23T20:28:22.467 に答える