如果复选框在轨道上的ruby中被锁定,则显示表单的其余部分

我需要向我的用户询问是否使用信用卡支付服务…如果选中了pay_with_card选项? 它必须显示表格的其余部分,要求其他数据,如卡号,邮件等,如果用户没有检查它,它必须显示一条消息,问题是……我怎么能这样做? 提前致谢

   

制作卡号/邮件详细信息div style =“display:none;”,然后在复选框中添加一些javascript以将其更改为显示:block;

像这样的东西:

 <%= form_for(@product) do |f| %> <%= f.label :pay_with_card? %> <%= f.check_box :pay_with_card,{}, "Yes", "No"%>  <% end %>  

使用jQuery怎么样?

首先,将您的信用卡字段包含在具有credit_card_fields类的div中,然后将此JS代码添加到您的页面:

 $("input[type='checkbox']#pay_with_card").on('change', function(){ $('.credit_card_fields').toggle(); }); 

您可以使用JS或将pay_with_card移出表单,如:

 <%= link_to 'pay with card', your_current_path(:pay_with_card => 1) %> <%= form_for(...) do |f| %> <% if params[:pay_with_card] %> <%= # fields for card %> <% end %> <% end %> 

你可以通过jQuery来做到这一点,例如:

 $ -> $('select#pay_with_card').change -> if $(this).val() == 'yes' $('.card_block').slideDown('fast') else $('.card_block').slideUp('fast') 

假设带有支付卡的表单部分包含在.card_block类的div中

好吧我的解决方案是:视图中的所有代码,如果用户检查pay_with_card …(mi代码是西class牙语)它显示完整的表单…如果未选中则不显示任何内容,只是相同的复选框要求付款…谢谢你们。

 function mostrar (){ var checkbox = document.getElementById('chk_tarjeta'); if (checkbox.checked) document.getElementById("card_details").style.display = "block"; else document.getElementById("card_details").style.display = "none";  

Forma de Pago

<%= form_for(@product) do |f| %>
<%= f.label :paga_con_tarjeta? %> <%= f.check_box :paga_con_tarjeta, :id => "chk_tarjeta", :onclick => "mostrar();" %>
<%= f.label :numero_de_tarjeta %> <%= f.text_field :numerotarjeta %>
<%= f.label :codigo_de_seguridad %> <%= f.text_field :codigoseguridad %>
Interesting Posts