2011-02-09 13 views
1

各キーアップを呼び出すkeyupイベントをキャッチしています。jquery keyboard pause catch

jQuery('#Search').keyup(function() { 

}); 

しかし、私はときに、ユーザー連続種類の文字のようなものを必要なだけ、私はAJAX呼び出しをトリガーにしたいという時5番目の文字で、またはn番目の文字にパスを与えました。ここでは、タイムアウト機能を使用してイベントをキャッチすることができますが、各キー押下でタイムアウト関数が呼び出されますので、同じことが繰り返されます。

また、一時停止後に再度入力を開始した場合、イベント/ある一時停止の後にのみ。

ここで、ユーザーが検索を開始したので、前のイベントまたはajax呼び出しを中止する必要があります。

私は以前の呼び出しを中止するために.abort();関数を使用しました。

jqueryで特定の期間が経過した後にイベントを取得する方法がありますか。

+0

となります。これらのブログ記事は、躊躇していないjoverイベントのhoverIntentに関するものです。 http://cherne.net/brian/resources/jquery.hoverIntent.html http://www.bennadel.com/blog/1786-Building-Custom-jQuery-Event-Types-Hesitate-Event.htm –

答えて

4
var search = $('#Search'), 
    search_delay = 100; 


search.keyup(function() { 
    var request = search.data('request'); 

    if(request) { // if request is running - abort it 
     request.abort(); 
     search.data('request', null); 
    } 

    clearTimeout(search.data('timer')); // if timer is running - stop it 

    search.data('timer', setTimeout(function(){ 
     // add your ajax call here or pass a reference 
     // to the function that will handle the ajax call 
     search.data('request', $.ajax(...)); 
    }, search_delay); 

}); 

あなたはあなたが停止することができますので、タイマーabortリクエストにしてできるようにするにはintrduced jQueryの1.5 jqXHRオブジェクトへの参照を格納するためにjQのにdata APIを使用することができ、事前に、

感謝を私にアドバイスをしてくださいタイマーはclearTimeout

+0

Thanks Tom、私はこれを試してみる。 – Elamurugan