3

jqueryのオートコンプリートがウィンドウのぼかしに隠れていますが、これを防ぐ方法は?

インターネット上で答えを見つけることができません。

シンプルに聞こえますが、ウィンドウのフォーカスとぼかしを決定する次のコードを使用すると、ぼかしに入る直前に開かれたすべてのオートコンプリートに対して何も表示されません。ウィンドウのぼかしは、オートコンプリートが非表示になるトリガーであるようです:

$(function() {
    $(window).focus(function() {

    });

    $(window).blur(function() {
        $(".ui-autocomplete").each(function(){alert($(this).css("display"));});
    });


});

none 以外のディスプレイを持つすべてのオートコンプリートの変数を設定してから、フォーカス表示でこれらを表示したかったのですが、ブラーでは、すべての「.ui-autocomplete」に対してディスプレイなしを取得します

4

1 に答える 1

4

オートコンプリートのblurイベントハンドラを次のように変更してみてください。

$(function(){
    $('#autocomplete').autocomplete({
        source: ['cat','rabbit','donkey']
    }).off('blur').on('blur', function() {
        if(document.hasFocus()) {
            $('ul.ui-autocomplete').hide();
        }
    });
});

このhasFocus()機能を使用すると、現在のウィンドウのフォーカスを確認し、オプションを閉じるかどうかを判断できます

ここにjsFiddle

于 2012-11-05T13:35:23.410 に答える