无法使用jQuery触发Rails表单提交

时间:2014-07-12 03:03:04

标签: jquery ruby-on-rails form-submit

我试图在页面加载jQuery时自动触发rails表单提交。我已经遵循了几个Stackoverflow建议,例如$(“form”)。submit()和$(“form”)。trigger(“submit.rails”)但没有成功。这是我的代码:

Rails索引

<%= form_for [@topic], remote: :true, id: "article-topic" do |f| %>
    <p>
        <%= f.label :name %>
        <%= f.text_field :name, id: "topic-name" %>
    </p>
        <%= f.submit %>
<% end %>

的jQuery

$(document).ready(function(){
    $("#topic-name").val("test");
    $("#article-topic").submit();
});

修改: 没关系,我想通了。 Rails会自动为表单分配自己的ID,因此我分配的那个ID没有被正确选取。使用:html =&gt; {:id =&gt; “文章主题”}做了伎俩。

2 个答案:

答案 0 :(得分:1)

为了给你一个提示,Rails只在你的页面上创建HTML forms,所以如果你在将一些事件绑定到你的DOM时遇到问题,那么很可能是一个JS问题

由于您已经解决了这个问题,我只想详细说明您需要考虑的几点:

  
      
  1. Turbolinks
  2.   
  3. 提交
  4.   

-

<强> Turbolinks

如果您在系统中使用Turbolinks,则$(document).ready的通话不会长时间停留 - 您最好使用其中一个Turbolinks event handlers,像这样:

var submit_action = function(){
   //do stuff here
}
$(document).on("page:load ready", submit_action);

-

提交

其次,您只需为您的表单调用标准submit事件即可。我之前从未见过submit:rails - 只有submit这样:

$(#form).on("submit", function(){
   // do something here
});

答案 1 :(得分:0)

Rails会自动为表单生成一个ID,所以我不得不改变我分配ID的方式。我将表单更新到下面,现在工作正常:

<%= form_for [@topic], remote: :true, id: "article-topic", :html => { :id => "article-topic" } do |f| %>
    <p>
        <%= f.label :name %>
        <%= f.text_field :name, id: "topic-name" %>
    </p>
        <%= f.submit %>
<% end %>