2012-03-21 1 views
0

私は自分のウェブ上に検索入力フィールドを持っています - それはFacebookのものと全く似ています。任意の文字を入力フィールドに入力すると、jQueryはその文字に応じて自動的に提案されたドロップダウン・ディビジョンを作成します。よく働く。jQueryドロップダウンの自動提案divs - ユーザーがそのdivを呼び出す入力フィールドの外側をクリックすると消えますか?

しかし、私は問題があります。入力領域が空でない場合、入力フィールドからすべての文字を削除しない限り、jQueryによって生成されたdivドロップダウンリストは常に開いたままです。

私の質問はとてもシンプルです - どうすればそのdivドロップダウンリスト(または入力フィールドと思います)の外側をクリックすると、そのドロップダウンリストが消えるだけですか?

答えて

1

いくつかのコードを見ることができれば助かりますが、おそらく.blurまたは.focusoutの方法を使用してこれを達成できます。

1
$('input').blur(function() { 
    $(this).hide(); 
}); 
+0

それは入力フィールドを削除しました(私の場合はそのフィールドで駆動されるdivではありません)が、素晴らしいコードです。そして私は病気がこのトリック・ティクス・リップスをどこで使うのか知っています! – Xfile

+0

問題はありません...答えはdiv-drop-downを隠すために簡単にリファクタリングできます。もしあなたがそれに助けが必要なら私に教えてください。 – shaunsantacruz

0

あなたの体にクリックイベントをバインドし、クリックされた要素がドロップダウンdivか、ドロップダウンdivの入力または子であるかどうかを確認できます。どちらも真でない場合は、ドロップダウンリストを非表示にする必要があります。

1

このような何か:

$(document).click(function (event){ 
    if($(event.target).parents('.dropdown-div-class,.input-class').length==0){ 
     $('.dropdown-div-class').hide(); 
    } 
}); 

dropdown-div-classinput-classがあなたの入力フィールドのクラスである、あなたが非表示にする必要があるのdivのクラスです。セレクターはニーズに合わせて変更することができます。しかし、ほとんどの場合、そのようなスクリプトにはこの機能も含まれています。 divが隠れてしまうのを防ぐために、何かエラーがあるかどうか確認してください。

+0

私はMikeのソリューションを使用していますが、これはかなりうまくいきました.JQueryの現在の動作を要素に書き直すにはもっと時間が必要なので、あとでもう一度チェックしてください。 – Xfile

関連する問題