【问题标题】:rails - How to use onsubmit with form_tagrails - 如何将 onsubmit 与 form_tag 一起使用
【发布时间】:2015-11-14 02:00:46
【问题描述】:

我想将下面的代码转换为form_forform_tag

<form onsubmit="foo()">

我该怎么办?我不想连接另一个页面(action="/URL")。

我只想在提交此表单时触发function foo()

【问题讨论】:

    标签: javascript ruby-on-rails ruby


    【解决方案1】:

    使用form_tagform_for 应该很容易做到这一点。示例:

    <%= form_for @model, :html => { :onsubmit => "foo()" } %>
    <% end %>
    

    <%= form_tag '#', :html => { :onsubmit => "foo()" } %>
    <% end %>
    

    【讨论】:

      【解决方案2】:

      使用form_tag 比使用form_for 更容易。试试这个:

      <%= form_tag '#', onsubmit: "foo();" do %>
      
      <% end %>
      

      另外,不要忘记在foo() 内,它应该是return false,这样表单才不会真正提交!

      【讨论】:

      • 除非我遗漏了什么,否则我看不出使用 form_tag 有多容易?
      • 使用form_for,您需要一个模型作为参数之一。由于您没有使用表单更新任何模型(仅调用函数),因此使用 form_tag 会更有意义,因为它只需要一个 url。
      【解决方案3】:

      最好将foo(); 函数放入Rails 中的unobtrusive 资产管道:

      #app/assets/javascripts/application.js
      var foo = function(e) {
         e.preventDefault();
         ...
      };
      $(document).on("submit", "#form", foo(e));
      

      您可以将其与 ...

      <%= form_tag "#", id: "form" do %>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-09
        • 1970-01-01
        • 2013-02-15
        • 2013-09-19
        • 1970-01-01
        • 1970-01-01
        • 2015-11-30
        相关资源
        最近更新 更多