30

我正在使用一个按钮在一组选定的复选框中执行处理。该解决方案基于 RailsCast #165。

一切正常,但前提是submit_tag按钮包含在表单中(这是我的应用程序中的一个表)。我想将提交按钮放在页眉中,但这会破坏与表单的连接。

如何在表单正文之外放置提交按钮?

<%= form_tag select_cosmics_path, method: :put do %>
  <%= submit_tag "Accept Checked", :class => "btn btn-primary" %> 

  <table class="table table-striped"> 
   .
   .
  <% @cosmics.each do |cosmic| %>
    <tr>
      <td><%= check_box_tag "cosmic_ids[]", cosmic.id %></td>
       .
       .
    </tr>
  <% end %>
  </table>
<% end %>

路线.rb

resources :cosmics do
  collection do
    put :select
  end
end
4

3 回答 3

54

虽然这个问题很老,但我认为可能值得指出一个不依赖 JavaScript 的更好选择。

HTML5form作为属性引入,可应用于任何表单控件,并将其绑定到基于其 id 的特定表单 - 即使该控件未嵌套在表单标记内。

例子:

<form id="my_sample_form">
...
</form>

<input type="submit" value="Submit" form="my_sample_form">

此提交按钮将使用其表单属性中指定的 id 提交表单。

此外,这不仅限于提交按钮,而是适用于任何表单控件,并允许您提交放置在各处的表单部分。

与大多数 JavaScript 解决方案相比,您将保留所有原生表单功能,例如在输入/返回时提交。

于 2015-06-30T09:57:55.507 回答
22

您可以在表单外创建一个按钮,并在单击该按钮时使用 javascript 提交表单:

HTML:

<button id="myBtn" class="btn btn-primary">Accept Checked</button>
...
<%= form_tag select_cosmics_path, method: :put, id: 'myForm' do %>
  ...
<% end %>

Javascript(使用 jQuery):

$(document).ready(function() {
  $('#myBtn').on('click', function() { $('#myForm').submit(); });
});

您也可以直接在onClick按钮的属性中添加javascript。

于 2013-06-22T13:10:52.123 回答
4

使用此coffescript 代码,您可以将提交外部表单添加到链接中。

HTML:

<a class="outside-form" data-formid="my-form">link to submit</a>

<form id="my-form">
  ...
</form>

咖啡脚本:

jQuery ->
  $buttons = $(".outside-submit")

  for button in $buttons
    $button = $(button)
    $form = $("##{$button.data().formid}")
    $button.on 'click', -> $form.submit()
于 2014-03-27T15:10:31.160 回答