【问题标题】:how to handle a submit with two different forms or methods如何使用两种不同的表单或方法处理提交
【发布时间】:2018-08-23 13:08:31
【问题描述】:

我在表单外有一个复选框,为此我使用带有 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'}%>

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

【问题讨论】:

  • 您想以两种不同的形式重复使用复选框?
  • 我希望在form1或form2中提交时能够使用此复选框的值。有可能吗?
  • 不幸的是,如果没有一点 Javascript,这是不可能的。

标签: javascript ruby-on-rails forms checkbox


【解决方案1】:

我会在两个表单中设置一个隐藏字段,并为它们添加一个类:

<%= 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("")
  }
})

现在,当您提交表单时,如果单击了隐藏字段,则该隐藏字段将具有复选框的值,否则它将为空。

【讨论】:

    【解决方案2】:

    您可以使用一个表单并使用不同的方法提交它,使用属性“formmethod”用于从 HTML5 开始的 type=submit 按钮。

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-10
      • 1970-01-01
      • 2013-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-04
      • 2011-02-13
      • 2017-05-23
      相关资源
      最近更新 更多