如何在用户完成输入后几秒钟启动ajax功能

时间:2016-12-27 03:58:47

标签: javascript php jquery ajax

晚安,我想知道在下面的代码中是否可以在ajax中插入此函数。我想只在用户完成输入2秒后提交搜索,替换“onkeyup”。

PS :这适用于Ajax Live Search。

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

如果你能帮助我,我将非常感激。

2 个答案:

答案 0 :(得分:1)

如果用户在2秒内继续,可以使用也会被取消的计时器

var timer;

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

})

答案 1 :(得分:1)

为了在用户完成输入后开始搜索,我们可以在用户释放密钥时启动计时器,如果他预先设置了密钥则停止计时。如果这两个事件之间的差异超过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);
    },
}); };