如何在输入文本字段发生更改时在RoR中提交表单

How can I submit a form in RoR whenever an input textfield changes?

本文关键字:RoR 提交 表单 输入 文本 字段      更新时间:2023-09-26

我使用的是RubyonRails。

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

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

我试过在我的表格里面

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

只是为了获取onchange事件,但不知何故,甚至没有出现此警报。。。

使用带有单个输入的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)。

通常,对于文本输入,您希望使用onkeypress、onkeyup、onkeydown事件,而不是针对这种类型的自动完成使用onchange@Ricardo Acras的解决方案比自己编写要好得多,但我想您可能想知道onchange不起作用,因为它不会启动,直到您退出文本输入(并且文本已经更改)。

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