代码之家  ›  专栏  ›  技术社区  ›  balint.miklos

每当输入文本字段更改时,如何在ROR中提交表单?

  •  3
  • balint.miklos  · 技术社区  · 17 年前

    我在使用Ruby on Rails。

    我想在页面上创建一个过滤字段,这样每当输入字段的值改变时,我都会通过Ajax过滤下面显示的列表。(就像用户搜索在stackoverflow中工作一样)

    现在,我让它与一个包含文本域标记和提交标记的表单远程标记一起运行,当我按下提交按钮时,它过滤我的列表。我想删除提交按钮,并在每次文本输入值更改时执行筛选。每次输入字段中的文本更改时,如何触发表单提交?

    我在表格里试过了

    <%= text_field_tag (:filter), "" , :onchange => "alert ('This is a Javascript Alert')" %>

    只是为了得到onchange事件,但不知何故,甚至这个警报也没有出现…

    2 回复  |  直到 17 年前
        1
  •  4
  •   Ricardo Acras    17 年前

    使用 观测场 具有单个输入的助手,如下面的代码:

    <%= text_field_tag 'filter' %>
    <%= observe_field 'filter', 
        :url => {:controller => 'your_controller', :action => 'filter'},
        :frequency => 1.2,
        :update => 'results',
        :with => "'typed_filter=' + $('filter').value" %>
    

    然后,只需编写一个控制器,在给定一个名为“typed_filter”的参数的情况下,呈现结果,wich将显示在id为“results”(可能是一个div)的元素中。

        2
  •  3
  •   tvanfosson    17 年前

    一般来说,对于文本输入,您希望使用onkeypress、onkeyup、onkeydown事件,而不是onchange来实现这种类型的自动完成。@Ricardo Acras解决方案比编写自己的解决方案要好得多,但我认为您可能希望知道onchange不起作用,因为它在退出文本输入(文本已更改)之前不会触发。

    我发现w3schools.com是一个很好的信息资源。 Here javascript html dom上有页面吗?和 here 是事件引用。