繁体   English   中英

如何重做键盘功能搜索

[英]how can i redo a search on keyup function

我正在尝试动态重做搜索,因为用户逐个字符地将它们键入搜索字段。 我是编程的新手,所以我不知道自己在做什么。 感谢您的帮助。

用户/索引视图:

<%= 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>

搜索工作不是动态的。

您在这里弄错了很多概念。 Lemme在这里说明您要做什么。 但是在我这样做之前,我强烈建议您获得一本不错的Rails书籍,并尝试这些书籍之前尝试一些应用程序。 每个人都从您的水平开始。 您尝试做的事情没有错:)。

首先:第一次在浏览器中加载页面时,Ruby代码仅执行一次。 您不能在javascript中使用ruby。 当您发送HTML页面作为对来自浏览器端的请求的响应时,您可以使用Ruby来按需呈现javascript,此后不会一次。 因此,您正在执行var search = <%User.paginate(page: params[:page]).search('$(this).val();')%>是不可能执行的。

在开发之前,您需要正确理解这些概念。 :)因此,请获得一本好书。

好的。

其次:我认为您的搜索工作正常,除了您的键入要求。 因此,我想您应该按顺序安排了控制器和模型。 因此,让我向您解释AJAX。

还记得当我说过您只能执行ruby代码或换句话说,在页面加载时只能调用一次Rails Controller吗? 没错,但是在JavaScript世界中有一个神奇的东西叫做AJAX。 这使您可以在不加载页面的情况下调用Rails应用程序并获取响应! 这正是您想要的。 您正在尝试仅更新搜索结果。 您不想重新加载整个页面。 您只想在用户按下搜索字段上的键时更新结果。

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

正确理解您的概念后,就可以从这里开始: http ://railscasts.com/episodes/240-search-sort-paginate-with-ajax?view=comments

然后,您会知道该怎么办。

祝好运。

var onChange = function()
{
alert('正在检查更改...');
};
$(this).off('keyup')。on('keyup',onChange);
$(this).off('paste')。on('paste',onChange);
$(this).off('cut')。on('cut',onChange);
$(this).off('undo')。on('undo',onChange);
$(this).off('redo')。on('redo',onChange);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM