jquery - jQuery 中按键之间的延迟 Action

标签 jquery ajax delay

如何在 jQuery 中延迟按键之间的操作。 例如;

我有这样的东西

 if($(this).val().length > 1){
   $.post("stuff.php", {nStr: "" + $(this).val() + ""}, function(data){
    if(data.length > 0) {
      $('#suggestions').show();
      $('#autoSuggestionsList').html(data);
    }else{
      $('#suggestions').hide();
    }
 });
}

如果用户连续输入,我想阻止发布数据。那么我怎样才能延迟0.5秒呢?

最佳答案

您可以使用 jQuery 的数据功能来执行此操作,如下所示:

$('#mySearch').keyup(function() {
  clearTimeout($.data(this, 'timer'));
  var wait = setTimeout(search, 500);
  $(this).data('timer', wait);
});

function search() {
  $.post("stuff.php", {nStr: "" + $('#mySearch').val() + ""}, function(data){
    if(data.length > 0) {
      $('#suggestions').show();
      $('#autoSuggestionsList').html(data);
    }else{
      $('#suggestions').hide();
    }
  });
}

这里的主要优点是没有全局变量,如果您愿意,您可以将其包装在 setTimeout 中的匿名函数中,只是想让示例尽可能干净。

关于jquery - jQuery 中按键之间的延迟 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2410937/

相关文章:

javascript - Ajax Minifier (AjaxMin) - JavaScript 的 EvalTreatment?

javascript - jquery中如何延迟焦点事件?

arduino - MQTT client.publish() 和 delay()

javascript - 检查是否检查了子输入

javascript - 从 div 中的图像获取 Id 属性

javascript - jquery、asp.net ajax、javascript 根本不执行

asp.net - ASP.NET 中 HTTP 模块和 HTTP 处理程序之间的内部延迟

asp.net-mvc - 如何在 ajax 请求 $.get/$.post 运行时显示模态 Loading ...?

javascript - 当满足 javascript/jquery 条件时显示 DIV(包括 jsFiddle 链接)

javascript - 提交表单后留在同一页面,然后再次处理表单