1

input要素にフォーカスイベントを設定しました。フォーカスがある場合、jQueryはdivを検索して表示します。それはうまくいきます。divを非表示にしたのと同じ入力要素でblurイベントをウィットします。これも機能します。しかし、リンクをクリックするか、表示されているdiv内のテキストを選択したい場合、blurイベントのためにすぐに消えます。表示されているdivの例外を作成するにはどうすればよいですか?

$("input.search-main-text").focus(function() {
    $("div.quickResults").show();
});

$("input.search-main-text").blur(function() {
    $("div.quickResults").hide();
});
4

3 に答える 3

2
$("input.search-main-text").bind('focus', function() {
    $("div.quickResults").show();
    $(document).bind('mousedown', function(e) {
        if (! $(e.target).closest('div.quickResults').length) {
            $("div.quickResults").hide();
            $(document).unbind('mousedown', arguments.callee);
        }
    })
});
于 2009-11-19T08:52:52.377 に答える
1

次のようなことを試みることができます。

  1. フォーカスのイベント ハンドラーをバインドする
  2. フォーカス時に、blur のイベント ハンドラー + 表示されている div の mouseenter のイベント ハンドラーをバインドします。
  3. 表示された div の mouseenter で、入力フィールドからぼかしイベントのバインドを解除します
  4. 表示されている div の mouseleave / その他の適切なイベントで、blur イベント リスナーを入力フィールドに再バインドします。
于 2009-11-19T08:11:32.377 に答える
0

これ以上の情報がなければ、多くを語ることはできませんが、もし私があなただったら、フォーカスとぼかしではなく、テキスト入力要素でchangeイベントを使用しようとするでしょう。実装しようとしていることを詳しく説明していただければ、より具体的に説明できるかもしれません。

于 2009-11-19T08:26:51.963 に答える