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 事件,但不知何故甚至没有出现这个警报......

4

2 回答 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)。

于 2008-10-25T17:24:01.903 回答
3

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

我发现 w3schools.com 是获取此类信息的绝佳资源。是关于 Javascript HTML DOM 的页面。这是事件参考

于 2008-10-25T18:39:49.863 回答