如何用两种不同的形式或方法处理提交

时间:2018-08-23 13:08:32

标签: javascript ruby-on-rails forms checkbox

我在表单外部有一个复选框,为此,我使用带有ID的表单,如下所示:

我的id:'check-form'表单

<%= form_for(:execution, url:{controller:"executions", action:'create_multiple'}, html:{id:"check-form", class:"form-inline"}) do |form| %>
    <div class="input-group mb-3">
        <%= form.select :collaborator_id,@collaborators.collect 
           { |collaborator| [collaborator.name, collaborator.id] },
           {prompt: 'Selecione'}, {class:'form-control', required:true} %>
        <div class="input-group-append">
            <%= button_tag(type: "submit", class: "btn btn-raised btn-primary", form:'check-form') do %>
                <span><i class="far fa-play-circle"></i> Play</span>
            <% end %>
        </div>
    </div>
<% end %>

我的form:'check-form'复选框

<%= check_box_tag 'execution[status_id][]', item.sector_status(sector.id).id, checked:false, 
{id:"check-#{item.sector_status(sector.id).id}", form:'check-form'}%>

我想要的是能够通过另一种方法使用另一种形式的复选框的值。我有什么办法或者使用函数通过两种可能的方法使表格“工作”?

2 个答案:

答案 0 :(得分:2)

我会在两种形式中都设置一个隐藏字段,并向它们添加一个类:

<%= hidden_field_tag('execution[status_id][]', item.sector_status(sector.id).id, {class: 'my_checkbox_value'}) %>

然后在表单外部创建一个虚拟复选框,单击该复选框将为这些隐藏字段分配一个值:

<%= check_box_tag('dummyCheckbox', someValue , yourClickedValue, {id: 'my_dummy_checkbox') %>

最后将它们与jQuery点击处理程序结合在一起

$("#my_dummy_checkbox").click(function() {
  if ($(this).prop("checked") == true) {
    $(".my_checkbox_value").val($(this).attr("value"))
  } else {
    $(".my_checkbox_value").val("")
  }
})

现在,提交表单时,如果单击了隐藏字段,则其值为复选框的值,否则为空。

答案 1 :(得分:1)

自HTML5以来,对于类型=提交的按钮,您可以使用一种表单并使用不同的方法使用属性“ formmethod”来提交表单。

<form .....>
  <button type='submit' formmethod='post'>Sends a POST request</button>
  <button type='submit' formmethod='get'>Sends a GET request</button>
</form>

与表单的method属性匹配的按钮可以忽略Formmethod属性。