2016-11-14 6 views
1

フォーカスが検索入力にない場合、検索結果を非表示にしようとしています。私は.keyup()機能の後に.blur()を使って簡単にそれを行うことができます。私の問題は、ユーザーが検索結果をクリックしたときに...まだ隠れていることです。フォーカスが入力にない場合、検索結果を非表示にします。

<form role="search" autocomplete="off"> 
    <div> 
    <input id="searchInput" type="text" placeholder="Search"> 
    </div> 
    <div class="search_main"> 
    <div id="sresult" tabindex="0"></div> 
    </div> 
</form> 

のjQuery:

$("#searchInput").keyup(function(e) { 
    var q = $(this).val(); 
    if (q !== undefined && q.length > 0) { 
    $("#sresult").show(150); 
    $("#sresult").html("No results"); 
    } else { 
    $("#sresult").hide(150); 
    } 
}).blur(function(e) { 
    $("#sresult").hide(150); 
}); 
だから、私は、検索結果に焦点を当てていないユーザーがテキスト入力とユーザーからフォーカスを削除するので、もしそれを作りたいだけ div

HTMLを隠します

JSFiddle Demo

+0

そのような条件がないためあなたの検索結果が見えるようにしました。 –

+0

表示したままにして隠す必要がある場合は、他のものを定義するには、ぼかし連鎖機能を削除する必要があります。 –

答えて

1

を使用して、単純なアドオン複数のイベント件のイベントハンドラ

element.on('event1 event2 etc...') 

あなたのイベントは、あなたの結果

DEMO

を示す実行される機能をクリックするか、keyUpイベントれる時間要素によって、この

$("#searchInput").on('keyup click',function(e) { 
    var q = $(this).val(); 
    if (q !== undefined && q.length > 0) { 
     $("#sresult").show(150); 
     $("#sresult").html("No results"); 
    } else { 
     $("#sresult").hide(150); 
    } 
}).blur(function(e) { 
    $("#sresult").hide(150); 
}); 

この方法のようになります

ホープこれはあなたを助ける

+0

"No results"をクリックするとまだ閉じています – user4756836

+0

これはあなたのぼかしイベントのためです – Beginner

+0

私は知っています...なぜ私の質問は "結果が表示されない"またはテキストボックスにフォーカスする – user4756836

関連する問題