0

ここに表があります:

<%= form_tag '', :id => "costs" do %>
<table class="table table-bordered" id="service_cost">
    <% @services.each do |service|  %>
    <tbody>
        <tr>
            <td><%= check_box_tag :open_service,  {}, false, :class => 'checkable' %></td>  
            <td><%= service.phone %></td>
            <td><%= service.internet %></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td><%= service.house_keeping  %> </td>
            <td>0.0 </td>
            <td><%= service.laundry %></td>
            <td><%= text_field_tag "service_cost", service.total, :class => "input-small" %></td>
        </tr>
    </tbody>
    <% end %>
</table>
<% end %>

フォームが送信されると、JavaScript が実行されます。

$("#costs").submit(function(){
  formData=$("#costs").serializeArray();
  processFormData(formData)
  return false;
});

これにより、チェックボックスを選択したときにフォームが送信されます。

$('.checkable').live('change', function() {
  $(this).parents('form:first').submit();
});

しかし、私が探しているのは、チェックボックスの選択/選択解除に基づいてセル値を追加または削除し、それを送信することです.親切にそれを行う方法を提案してください.

4

2 に答える 2

0

テーブルに複数の行がある場合、非表示が td で機能するかどうかはわかりませんが、次のような場合:

<table>
    <tr>
        <td class="data">data</td>
        <td><input type="checkbox" class="checkable" value="data"></td>
    </tr>
</table

$('.checkable').live('change', function() {
      $(this).closest('tr.data').hide();
      $(this).parents('form:first').submit();

});
于 2012-09-30T15:23:19.090 に答える
0
<%= check_box_tag :check %>
<%= form_tag '', :id => "costs" do %>
  <%= text_field_tag, :detbycb, :size=>20 %>
<% end %>

$('#check').on('change', function() {
   if ( $('#check').is(':checked') )
      $('#detbycb').val('I Am Checked');
   else
      $('#detbycb').val('I AM NOT checked');
}

OR

$('#check').on('change', function() {
   if ( $(this).is(':checked') )
      $('#detbycb').val('I Am Checked');
   else
      $('#detbycb').val('I AM NOT checked');
}

The first better illustrates,  the second is the real way, faster execution
于 2012-09-30T15:29:01.810 に答える