0

我有一个 form_remote 非常适合表单货币。我要做的唯一更改是取消选择框的提交按钮。所以他们只需点击正确的货币并提交 ajax 请求。

<%= collection_select(:currency, :set, Currency.find(:all, :conditions => 'primary_source = "ECB"'), :code, :pretty_name, { :selected => session[:currency] }, { :onchange => "$('currency').submit()" } )  %>

onchange 适用于选择,但不是使用远程 ajax 请求,而是刷新整个页面......而不仅仅是一个元素,我如何启动 remote_tag 以便它执行与单击提交相同的操作?

4

1 回答 1

1

您遇到的问题是 Rails 将 remote_form_for 实现为表单的 onsubmit 属性中的内联 Ajax 方法。问题是提交事件仅在用户实际提交表单时触发,而不是通过调用 $('form').submit()。实际上,我相信有些浏览器可能会触发该事件,但其他浏览器不会。无论如何,这在您发现的一般情况下都行不通。

一种可能的解决方法,我只在 Firefox 3.5 中测试过,所以你的里程可能会有所不同,是直接调用属性作为函数。所以在你的 :onchange 里面放:

$('currency').onsubmit()

如果这不起作用,您可能需要查看生成的源代码,并将 AJAX 请求从 onsubmit 属性中拉出,并放入您可以直接调用的独立方法中。

据我所知,没有跨浏览器的方法可以可靠地触发本机事件。

于 2009-10-15T17:33:13.923 回答