我有一个实时搜索字段,它在键入时进行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请求。我该怎么做?提前谢谢。
var liveSearchTimer;
$liveSearchInput.keyup(function() {
clearTimeout(liveSearchTimer);
liveSearchTimer = setTimeout(liveSearchDoAjax, 500);
});
只有在半秒钟内没有按键时,才会发送请求。