2011-07-20 8 views
0

私は以下のような状況に陥っています:jqueryでのイベントのオーダー

キーワードを入力できるテキストボックス。 keyupイベントは、AJAXスクリプトを起動してデータベース内で類似したキーワードを検索します。見つかった場合、DIVが見つかったキーワード(show())が表示されます。

div内のキーワードの1つをクリックすると、選択したキーワードがテキストボックスに書き込まれ、divが非表示になります(hide())。

DIVが表示されていて、フォームのどこかをクリックするか、テキストボックス(focusoutイベント)のタブをクリックすると、DIVが非表示になります。

これは、focusoutイベントで行うことができます。しかし、私がDIVのキーワードをクリックして登録するためにclickイベントを使用し、focusoutイベントを登録するためにfocusoutイベントを使用すると、次の問題が発生します:divのキーワードをクリックすると、focusoutイベントが発生し、このキーワードはテキストボックスにコピーされません。

/*click on found "link with class f_link" in DIV*/ 
$(".f_link").live('click', function(){ 

    $newval=$(this).attr("id"); 
    $("#textbox_id").val($newval); 
    $("#searchresults").hide(); 
}) 


/*when losing focus textbox hide DIV */ 
$("#textbox_id").focusout(function(){ 
    $("#searchresults").hide(); 

}) 

、について説明:

#textbox_id : id of textbox 
#searchresults: id of DIV with found results 
.f_link : class of "link" in div searchresults like <span class="f_link" id="result1>result 1</span> 

答えて

0

試してください:あなたはfocusoutのぼかし機能isteadを使用することができます

/*when losing focus textbox hide DIV */ 
$("#textbox_id").blur(function(){ 
    $("#searchresults").hide(); 
}) 
-1

...

は、私は現在、次のコードを持っています

$("#textbox_id").live('blur',function(){ 
    $("#searchresults").hide(); 
}) 
+0

をはい、あります。 http://api.jquery.com/focusout/ – Bryan

0

ぼかし(focusoutも同様にjQueryでのイベントです。)動作しませんでした

私は、このソリューションでそれを管理:

$(".f_link").live('click', function(){ 
    $("#textbox_id").val($newval=$(this).attr("id")); 
    $("#searchresults").hide(); 
}) 

$mouseover=false; 
$("#searchresults").live('mouseover', function(){ 
    $mouseover=true; 
}) 

$("#searchresults").live('mouseout', function(){ 
    $("#textbox_id").focus(); 
    $mouseover=false; 
}) 



$("#textbox_id").focusout(function(){ 
    if ($mouseover) { 
     return; 
    } 
    $("#searchresults").hide(); 
}) 
関連する問題