每当输入文本字段发生变化时,如何在RoR中提交表单?

时间:2008-10-25 17:18:05

标签: javascript ruby-on-rails forms

我正在使用Ruby on Rails。

我想在页面上创建一个过滤器字段,这样每当输入字段的值发生变化时,我都会通过ajax过滤下面显示的列表。 (例如用户搜索在Stackoverflow中工作)

现在,我使用包含text_field_tag和submit_tag的form_remote_tag运行它,并在按下提交按钮时过滤我的列表。我想删除提交按钮,并在每次文本输入的值发生变化时执行过滤。每当输入字段中的文本发生更改时,如何触发表单提交?

我在我的表单中尝试了

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

只是为了获得onchange事件,但不知何故甚至没有出现此警告......

2 个答案:

答案 0 :(得分:4)

observe_field 帮助器与单个输入一起使用,如下面的代码:

<%= 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'的参数,渲染结果,它将显示在id为'results'的元素中(可能是div)。

答案 1 :(得分:3)

一般情况下,对于文本输入,您要使用onkeypress,onkeyup,onkeydown事件,而不是onchange这种类型的自动完成。 @Ricardo Acras解决方案比编写自己的解决方案好得多,但我想你可能想知道onchange不起作用,因为它不会触发,直到你导出文本输入(并且文本已被更改)。 / p>

我发现w3schools.com是这类信息的绝佳资源。 Here是Javascript HTML DOM上的页面。 here是事件参考。