每当输入文本框更改时,我如何在RoR中提交表单?

3

我正在使用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个回答

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)。


3
一般来说,对于文本输入框,您希望使用onkeypress、onkeyup和onkeydown事件,而不是使用onchange事件进行自动完成。@Ricardo Acras的解决方案比自己编写要好得多,但我想让您知道,因为onchange事件只有在您导航离开文本输入框(并且文本已更改)时才会触发,所以它不起作用。
我发现w3schools.com是这种信息的良好资源。这里是他们的Javascript HTML DOM页面。这里是事件参考。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接