等待ajax请求,直到用户停止输入

时间:2014-06-02 07:20:57

标签: ajax ruby-on-rails-4 timer livesearch

我有一个实时搜索字段,可以在输入时进行ajax调用。我的问题是它会调用每个输入的字母。 这是我的代码

在js文件中

  $(document).ready(function(){
   $("#employees_search input").keyup(function() {
    $.get($("#employees_search").attr("action"), $("#employees_search").serialize(), null , "script");
    return false;
   });
  });

在html文件中

<div align="center" id="empName">
  <%= form_tag employees_path, :method => 'get', :id => "employees_search" do %>
  <p>
    <%= text_field :search, params[:search], placeholder: 'Search Employees Here', id: 'search_field' %>
  </p>
  <% end %>
</div>
控制器中的

   @employees = Employee.where("department='Delivery'").paginate(:per_page => 6, :page => params[:page]).searchByEmp(params[:search][0]).order('name ASC')

在模型中

  def self.searchByEmp(search)
      if search
        where('name LIKE ?', "#{search}%")
      else
         scoped
      end
  end

实际上我需要在用户停止输入除了输入的每个字母之外的单词之后才发送ajax请求。我怎样才能做到这一点? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

var liveSearchTimer;
$liveSearchInput.keyup(function() {
  clearTimeout(liveSearchTimer);
  liveSearchTimer = setTimeout(liveSearchDoAjax, 500);
});

只有在半秒钟内没有按任何键时才会发送请求。

相关问题