【问题标题】:rails form_remote_tag and onselect submitrails form_remote_tag 和 onselect 提交
【发布时间】:2009-10-15 17:12:39
【问题描述】:

我有一个 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 以便它执行相同的操作单击提交会?

【问题讨论】:

    标签: ruby-on-rails ruby ajax forms rjs


    【解决方案1】:

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

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

    $('currency').onsubmit()
    

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

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

    【讨论】:

    • 适用于 firefox、chrome 和 safari……现在已经足够好了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多