Ruby on rails 3 keyup搜索函数

Ruby on rails 3 keyup搜索函数,ruby-on-rails-3,jquery,Ruby On Rails 3,Jquery,我有一个搜索函数,在rails应用程序上使用.keyup方法。我知道电话是有效的,因为我键入的第一个字母是搜索和显示结果。如果我继续键入,它不会继续搜索该方法。下面是我的jquery以及它调用的rails视图的一部分 JQuery $("input#search").keyup(function (){ $.get($("#verified_search").attr("action"), $("#verified_search").serialize(), null, "scr

我有一个搜索函数,在rails应用程序上使用.keyup方法。我知道电话是有效的,因为我键入的第一个字母是搜索和显示结果。如果我继续键入,它不会继续搜索该方法。下面是我的jquery以及它调用的rails视图的一部分

JQuery

    $("input#search").keyup(function (){
    $.get($("#verified_search").attr("action"), $("#verified_search").serialize(), null, "script");
    return false;
});
index.js.erb

$(".results").html("<%= escape_javascript(render("search")) %>");
$(“.results”).html(“”);
index.html.erb视图

 <%= form_tag admin_view_index_path, :method => 'get', :id => 'verified_search' do %>
            <%= text_field_tag :search, params[:search] %>
            <%= submit_tag "Search", :name => :nil %>
 <% end %>

 <%= render 'search' %>
'get',:id=>'verified\u search'do%>
:无%>
使用
.live()

在index.js.erb中替换
$('.results')
的内容时,与这些元素关联的所有侦听器都将消失

Edit:正如链接中所说,
.live()
方法在jQuery 1.7中被弃用。使用
.on()
附加事件处理程序。较旧版本的jQuery用户应该优先使用
.delegate()
,而不是
.live()

试试这个

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

如果您继续键入是否向服务器发送新请求?您必须做的一件事是
在发送新请求之前中止上一次搜索,如果需要,会发送请求但没有信息。在我最初的搜索中,我的第一个字母是“j”。它给了我参数:{“search=>“j”,“1361982841588”}。在下一个字母类型上,它更新了我的服务器,但参数中没有任何信息。看起来是这样的参数:{“=>”1361982850183“}。在发送请求后如何中止以前的搜索?类似于
var xhr;$(函数(){$(“输入#搜索”)。keyup(函数(){if(xhr&&xhr.readystate!=4){xhr.abort()}xhr=$.get($(“#已验证#搜索”).attr(“操作”),$(“#已验证#搜索”).serialize(),null,“script”);return false;});
即使在我输入第一个字母后使用.live函数,它也会进行搜索,但不会继续更新内容。实际上,更详细的描述是在我输入第一个字母后,比如说“J”。如果我进一步输入,它会给出结果,例如“ja”“它会清除我的搜索并加载原始页面并停止搜索。我还使用了.on()和“submit”事件。它只允许一次搜索。我相信它会出现在加载的内容中。当我执行.on(“submit”),它会执行一次ajax功能,然后当我键入搜索其他名称时,它不会搜索任何内容。
$(document).on("keyup", "#verified_search", function(){
       $.get($("#verified_search").attr("action"), $("#verified_search").serialize(), null, "script");
       return false;
   });