【问题标题】:Select/Deselect All dynamic checkboxes in Rails 4 with Javascript使用 Javascript 选择/取消选择 Rails 4 中的所有动态复选框
【发布时间】:2014-08-29 02:45:56
【问题描述】:

我已经关注了这个 StackOverflow 问题的 Answer1Answer2

但没有得到结果.. 因为我从Range 表中调用所有复选框列表的数据。并且他们的 id 也是由数据定义的。让我给你看这个截图的代码

= f.collection_check_boxes :range_ids, Range.active, :id, :name, {},:class=>'checkbox'

返回为

<input id="campaign_range_ids_1" class="checkbox" type="checkbox" value="1" name="campaign[range_ids][]">
<input id="campaign_range_ids_2" class="checkbox" type="checkbox" value="2" name="campaign[range_ids][]">
<input id="campaign_range_ids_3" class="checkbox" type="checkbox" value="3" name="campaign[range_ids][]">
<input id="campaign_range_ids_4" class="checkbox" type="checkbox" value="4" name="campaign[range_ids][]">

我想如果All 表示id="campaign_range_ids_4" 被选中/取消选中,那么所有其他复选框都应该相应地执行..

这里还有范围表的截图

我试过这个 Javascript

:javascript
  $('#campaign_range_ids_4').click(function() {
       if(this.checked) {
           $('#campaign_range_ids_1').checked = true;
           $('#campaign_range_ids_2').checked = true;
           $('#campaign_range_ids_3').checked = true;
           });
       } else {
           $('#campaign_range_ids_1').checked = false;
           $('#campaign_range_ids_2').checked = false;
           $('#campaign_range_ids_3').checked = false;
           });
       }
    });

请纠正我在哪里做错了.. 提前谢谢.. :)

更新问题

我已关注 Shridhar'sPavan's 回答它工作正常但现在我希望当我选择全部然后取消选择任何一个时它必须取消选中“全部"(第 4 个复选框),但它保持原样..

【问题讨论】:

  • 你把id给错了,应该是$('#campaign_range_ids_4')而不是$('#campaign_beacon_range_ids_4')
  • 感谢 Pavan 但仍然没有得到...
  • @Pavan : 完成了.. ;)

标签: javascript jquery ruby-on-rails checkbox haml


【解决方案1】:

正如我所说,应该是$('#campaign_range_ids_4') 而不是$('#campaign_beacon_range_ids_4')

这个也可以

$('#campaign_range_ids_4').click(function() {
   if(this.checked) {
       $(':checkbox').each(function() {
           this.checked = true;                        
       });
   } else {
      $(':checkbox').each(function() {
           this.checked = false;                        
       });
   } 
});

Demo

【讨论】:

  • 错误地我写了 $('#campaign_beacon_range_ids_4') 然后正确然后也没有用...
  • 感谢 Pavan...为此提供 1+ 的帮助 :)
  • 我发现另一个问题......它可以正常选择/取消选择全部但是当我选择全部然后取消选择任何一个然后它必须取消选中“全部”(第 4 个复选框)但它保持原样..
【解决方案2】:

选择器出错,应该是$('#campaign_range_ids_4') 而不是$('#campaign_beacon_range_ids_4') 使用prop() 设置复选框状态

试试这个

$('#campaign_range_ids_4').click(function () {

    if ($(this).is(':checked')) {
        $('#campaign_range_ids_1,#campaign_range_ids_2,#campaign_range_ids_3').prop('checked', true);

    } else {
        $('#campaign_range_ids_1,#campaign_range_ids_2,#campaign_range_ids_3').prop('checked', false);
    }

});

DEMO

$('#campaign_range_ids_4').click(function () {
    $('#campaign_range_ids_1, #campaign_range_ids_2, #campaign_range_ids_3').prop('checked', $(this).is(':checked'));
});

DEMO

【讨论】:

  • @Gagan 很高兴它有帮助:-)
  • 我发现另一个问题......它可以正常选择/取消选择全部但是当我选择全部然后取消选择任何一个然后它必须取消选中“全部”(第 4 个复选框)但它保持原样..
  • 我已经解决了这个问题很抱歉打扰,检查我的答案... ;)
【解决方案3】:

将选择器更改为$('#campaign_range_ids_4')并执行以下操作:

$('#campaign_range_ids_4').change(function() {
    $('#campaign_range_ids_1, #campaign_range_ids_2, #campaign_range_ids_3').prop('checked', this.checked);
});

使用change 方法代替click

【讨论】:

  • 很高兴你得到了 SO 的帮助。
【解决方案4】:

修改Sridhar's答案终于我得到了我更新问题的答案。

我想如果All(第4个复选框)是checked,那么所有的复选框都应该被选中,如果它是unchecked,那么所有的复选框都应该是unchecked它工作得很好

但是问题我发现如果All(第4个复选框)被选中,那么它会选中所有复选框,然后如果我取消选中任何复选框,那么All(第4个复选框)必须是@ 987654329@ 没有发生。

修改代码解决方案:以后如果其他人遇到同样的问题..

HTML 代码:

<input id="campaign_range_ids_1" class="checkbox" type="checkbox" value="1" name="campaign[range_ids][]">London
<input id="campaign_range_ids_2" class="checkbox" type="checkbox" value="2" name="campaign[range_ids][]">India
<input id="campaign_range_ids_3" class="checkbox" type="checkbox" value="3" name="campaign[range_ids][]">USA
<input id="campaign_range_ids_4" class="checkbox" type="checkbox" value="4" name="campaign[range_ids][]">All

JavaScript:

$('#campaign_range_ids_4').click(function () {

    if ($(this).is(':checked')) {
        $('#campaign_range_ids_1,#campaign_range_ids_2,#campaign_range_ids_3').prop('checked', true);

    } else {
        $('#campaign_range_ids_1,#campaign_range_ids_2,#campaign_range_ids_3').prop('checked', false);
    }

});

$('#campaign_range_ids_1,#campaign_range_ids_2,#campaign_range_ids_3').click(function () {

    if ($(this).is(':checked')) {
        } else {
            $('#campaign_range_ids_4').prop('checked', false);
    }

});

Working Demo:

【讨论】:

    猜你喜欢
    • 2015-11-04
    • 2015-01-14
    • 1970-01-01
    • 2018-04-20
    • 2023-04-04
    • 2011-10-09
    • 2014-06-29
    • 1970-01-01
    • 2015-11-27
    相关资源
    最近更新 更多