Javascript 我如何在keyup函数上重做搜索

Javascript 我如何在keyup函数上重做搜索,javascript,ruby-on-rails,Javascript,Ruby On Rails,我试图在用户逐个字符地将搜索键入搜索字段时动态重做搜索。我对编程相当陌生,因此我不知道自己在做什么。谢谢你的帮助 用户/索引视图: <%= form_tag users_path, :method => 'get', class:"input-append" do %> <%= search_field_tag :search, params[:search], :class => "search-query2", id:"search_on_index",

我试图在用户逐个字符地将搜索键入搜索字段时动态重做搜索。我对编程相当陌生,因此我不知道自己在做什么。谢谢你的帮助

用户/索引视图:

<%= form_tag users_path, :method => 'get', class:"input-append" do %>

  <%= search_field_tag :search, params[:search], :class => "search-query2", id:"search_on_index", placeholder: "Search for people" %>

  <script type="text/javascript">
      $('#search_on_index').keyup(function () {
          var search = <%User.paginate(page: params[:page]).search('$(this).val();')%>
          $('#listeners').replaceWith(search)
      });
  </script>
<% end %>

<%= will_paginate %>

<ul class="users" id="listeners">
  <%= render @users %>
</ul>
“get”,类:“input append”do%>
“search-query2”,id:“在索引上搜索”,占位符:“搜索人员”%>
$(“#在_索引上搜索”).keyup(函数(){
变量搜索=
$(“#侦听器”).replaceWith(搜索)
});
搜索不是动态进行的。

var onChange=function()
{
警报('检查更改…');
};
$(此).off('keyup')。on('keyup',onChange)
$(this).off('paste')。on('paste',onChange)
$(此).off('cut')。on('cut',onChange)
$(this).off('undo')。on('undo',onChange)

$(this).off('redo')。on('redo',onChange)

您在这里犯了很多错误。让我解释一下你想在这里做什么。但在我这么做之前,我强烈建议您先买一本好的Rails书籍,在自己尝试之前先试用这些书籍中的几个应用程序。每个人都从你这个级别开始。你所做的一切都没有错:)

首先:当页面第一次在浏览器中加载时,Ruby代码只执行一次。不能在javascript中使用ruby。当您将HTML页面作为对来自浏览器端的请求的响应发送时,您可以使用Ruby呈现javascript。因此,您正在执行的
var search=
部分是不可能完成的

在开发之前,您需要正确理解这些概念。:)所以,找一本好的rails书籍

好的

第二:我假设你的搜索工作良好,除了你的密钥要求。所以我猜你们的控制器和模型都是井然有序的。那么让我向你解释一下AJAX

还记得我说过你只能执行ruby代码,或者换句话说,在页面加载时只调用Rails控制器一次吗?这是真的,但在javascript世界中有一种神奇的东西叫做AJAX。这允许您在不加载页面的情况下调用Rails应用程序并获得响应!这正是你想要的。您正在尝试更新搜索结果。您不想重新加载整个页面。您只需要在用户按下搜索字段上的键时更新结果

使用AJAX,您可以向服务器发出请求并获得响应。因此,在您的应用程序中,如果用户按enter或submits,请求将指向搜索表单将提交的URL。您将传递什么作为此URL的参数?是的,你猜对了!搜索字段的值

好的,在正确理解概念后,从这里开始:

那你就知道该怎么办了


祝你好运。

在你的服务器上运行的Rails应用程序(例如,可能是云中某处的一台计算机)获取
视图/users/index.html.erb
模板,计算嵌入的Ruby,结果是一个html文档(其中可能包含一些JavaScript)发送到客户端。客户端(例如,它可能是用户的一个web浏览器)获取HTML文档,呈现它,并计算JavaScript。因此,例如,如果JS代码要求修改HTML,您的浏览器将执行此操作并呈现结果。特别是,您在。。。。。。JavaScript函数永远不会像您期望的那样工作。您尝试实现的功能更高级一些,您可能希望首先确定一些其他概念,如客户机-服务器模型、Rails视图/控制器如何工作以及它们做什么、JavaScript在网页上可以做什么和不能做什么,等等。从那里您想了解AJAX,它如何工作,它做什么,以及不同的使用方法。一旦你知道了如何使用AJAX,实现你要问的功能将非常简单。谢谢你的建议,我最终计划读一本rails的书。我一直在边走边学,这对我来说更有趣,但显然会留下一些基本的差距。这也是一个很好的学习方式。但是您需要对服务器端代码和客户端代码以及整个客户端-服务器体系结构有一些基本的了解。所以,先从基础做起。在尝试之前先了解你在做什么。你可以是一个开发人员,只是通过复制代码片段来编写一个应用程序,而不知道它是如何工作的,或者你可以花一些时间来理解你试图构建的内容背后的概念,从而成为一个伟大的开发人员。没有人是完美的。不是每个人都能理解一切。。我们必须继续努力!。。祝你一切顺利。。