2016-12-27 14 views
2

おやすみ良い夜このコードを以下のコードでajaxに挿入できるかどうかを知りたいと思います。ユーザーが入力を完了して2秒後に検索を提出し、「onkeyup」を置き換えたいとします。ユーザーが入力を完了してから数秒後にajax関数を開始するには

PS:これはAjaxライブ検索用です。

function pesquisar(value) { 
$("#results").show(); 
$.ajax({ 
    type:'post', 
    url:'/classes/searchfetch.php', 
    data: {s:value},  
    success: function (data){ 
     $("#results").html(data); 
    }, 
}); }; 

あなたが私を助けることができれば非常に感謝します。

+0

何らかの理由で2秒以上タイピングをやめてもう一度タイピングを開始するとどうなりますか? –

+0

'setTimeout'と' clearTimeout'を使って、onKeyUpのタイマーを停止/開始することができます。 – ccKep

+0

FYIこれのための1つのキーワードは、将来のようにもっと多くのものを調べたい場合に 'debounce'と呼ばれます。 – therobinkim

答えて

1

以内続けた場合、ユーザーがキーを離したとき、私たちはタイマーを開始することができますキャンセルになるだろう、タイマーを使用することができます彼が押されたら止めてください。これら2つのイベントの差が2秒を超える場合、イベントが発生します。あなたの入力IDがinpの場合

var timer; 

//Start a timer on keyup event 
$('#inp').on('keyup', function() { 
    //add loading indicator 
    $('#results').html("<img src='loading.gif'>"); 
    clearTimeout(timer);  // clear timer 
    timer = setTimeout(pesquisar, 2000); 
}); 


$('#inp').on('keydown', function() { 
    clearTimeout(timer);  // clear timer if user pressed key again 
}); 

/call ajax function when user finished typing 
function pesquisar(value) { 
$("#results").show(); 
$.ajax({ 
    type:'post', 
    url:'/classes/searchfetch.php', 
    data: {s:value},  
    success: function (data){ 
     $("#results").html(data); 
    }, 
}); }; 
+0

さらにもう1つのことは、その値を送ったonkeyup属性。今私はどうしますか? –

+0

私はあなたが言うことを理解していません –

+0

忘れてしまった、私はすでに解決策を見つけました。どうもありがとうございました。 –

1

することも、ユーザが入力を終えた後、検索を開始するためには2秒

var timer; 

$('input').keyup(function(){ 
    // clear prior timeout 
    clearTimeout(timer); 
    // create new one 
    timer = setTimeout(pesquisar, 2000) 

}) 
関連する問題