3

入力フィールドがあります。特定の条件下では、ユーザーが Tab キーを押したときに、ユーザーが入力フィールドに集中できるようにしたいと考えています。基本的に、Google の自動入力検索ボックスの機能を模倣しています。問題のないブラウザを除いて、すべてのブラウザですべて正常に動作しています... Firefox!?

次のコードは、IE、Chrome、および Safari で期待どおりに機能します。クラス myInput でテキスト ボックスから Tab キーを押すと、フォーカスはテキスト ボックスにとどまります。しかし、Firefox では、Tab キーを押してテキスト ボックスから出ると、次のテキスト ボックスに移動します。(これは私がやっていることの非常に単純化されたバージョンです。これを機能させることができれば、実際のコードを機能させることができます。)

$(document).ready(
    function()
    {               
        $(".myInput").blur
        (
            function()
            {
                $(this).focus();
                $(this).select();
            }
        );      
    }
);

PS。setTimeout() を使用した修正を提案しないでください。ありがとう。

jQuery に .focus() があり、javascript に .focus() があり、それらがどのように同じでないかを説明する記事を読みました。私はこれを理解しています(と思います)が、何が間違っているのかまだわかりません。

追加...この方法で動作させることができます

$(document).ready(
    function()
    {               
        $(".myInput").blur
        (
            function()
            {
                setTimeout("$('.myInput').focus();",1);
            }
        );      
    }
);

ハックのようですが、なぜ Firefox がぼかしに焦点を合わせないのかわかりません。ですから、どなたかご存知の方がいらっしゃいましたら、教えていただけると助かります。

4

3 に答える 3

2

jQuery を使用しているため、.focusout() メソッドを使用する必要があります。

http://api.jquery.com/focusout/

これは、親要素からのフォーカスの喪失の検出をサポートするという点で、blur イベントとは異なります (つまり、イベント バブリングをサポートします)。

于 2011-03-16T16:24:59.100 に答える
1

上記の質問を回避することで、状況を解決できました。

Tab キーを扱っているので、(上記の試みのように) ユーザーがタブで移動したフィールドにフォーカスを戻そうとするのではなく、Tab キーで preventDefault() を使用しました。そのため、フォーカスが失われることはなく、交換の心配もありません。

displayTextBox.keydown
(
    function(event)
    {           
        // 9 = Tab Key
        if (event.keyCode == "9")
        {
            event.preventDefault();
        }
    }
);

これを完全にテストしたわけではありませんが、今のところ FF、Chrome、および IE で動作するようです。

于 2011-03-16T18:04:20.853 に答える
0

html属性を使用してみてくださいonfocusout

于 2011-03-16T15:47:56.357 に答える