【问题标题】:check/uncheck all with collection_check_boxes使用 collection_check_boxes 选中/取消选中所有
【发布时间】:2017-07-10 22:33:37
【问题描述】:

我使用simple_form_for 仅将符号而不是模型传递给表单,因此我可以将自定义参数发送回控制器。 我设法将复选框默认为默认选中的所有复选框。

我不知道如何添加全选/取消全选复选框。我想我需要一些 JS 在那里,但我不知道我必须更改哪个属性值。

当我选中/取消选中任何项目但input 元素中的属性没有更改时,我在浏览器控制台中检查了是否有任何属性更改。不过,当我选中/取消选中某个项目时,<form> 元素确实会发光。这就是我能找到的线索的接近程度。

= simple_form_for :mass_unassignment, url: admin_merchant_holiday_path(@merchant), method: :post do |f|
    - if @jobs.present?
      %h3 Cleaning
      %table
        %thead
          %tr
            %td= check_box_tag :mass_select
            %td Id
            %td Date
            %td Customer
        %tbody
          = f.collection_check_boxes :jobs, @jobs, :id, :start_at, checked: @jobs.map(&:id) do |el|
            - job = el.object
            %tr
              %td= el.check_box checked_value: 1
              %td= link_to el.object.id, admin_job_path(job)
              %td= job.start_at.strftime('%e %b %y – %I:%M%P')
              %td= link_to job.customer.full_name, admin_customers_path(job.customer)

【问题讨论】:

标签: javascript ruby-on-rails checkbox haml simple-form


【解决方案1】:

这似乎更像是一个 Javascript 问题,而不是一个 RoR 问题。 从@jdgray 评论中给出的链接,你可以使用这个:

function toggle(source) {
  checkboxes = document.getElementsByName('foo');
  for(var i=0, n=checkboxes.length;i<n;i++) {
    checkboxes[i].checked = source.checked;
  }
}

或者,如果您使用的是 jQuery,那么您可以这样做:

$('#all-check').change(function(){
    if ($(this).prop('checked')){
        $('form :checked').each(function(){
            $(this).prop('checked', true);
        });
    }else{
        $('form :checked').each(function(){
            $(this).prop('checked', false);
        });
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-22
    • 2011-06-15
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多