Javascript 限制rails循环中的集合复选框选择

Javascript 限制rails循环中的集合复选框选择,javascript,ruby-on-rails,ruby,Javascript,Ruby On Rails,Ruby,我想将复选标记的选择限制在一定数量,这样人们就不会滥用类别选择 下面是我遇到的几个例子的尝试。没有一个可以与循环一起工作。我用一个常规的、手动样式的复选框系统对它进行了测试,它可以正常工作。还没有发现任何他们使用循环的例子 <div id="checkbox"> <%= form.collection_check_boxes(:category_ids, Category.all, :id, :name, :multiple => true) %>

我想将复选标记的选择限制在一定数量,这样人们就不会滥用类别选择

下面是我遇到的几个例子的尝试。没有一个可以与循环一起工作。我用一个常规的、手动样式的复选框系统对它进行了测试,它可以正常工作。还没有发现任何他们使用循环的例子

  <div id="checkbox">
    <%= form.collection_check_boxes(:category_ids, Category.all, :id, :name, :multiple => true) %>
  </div>

  <script>

  $('.checkbox :name').change(function () {
    var $cs=$(this).closest('checkbox').find(':name:checked');
    if ($cs.length > 3) {
        this.checked=false;
    }
});
</script>

正确)%%>
$('.checkbox:name').change(函数(){
var$cs=$(this).closest('checkbox').find('name:checked');
如果($cs.length>3){
这个.checked=false;
}
});
我想把支票限制在5张以内


关于如何设置JS以使用循环的建议?

可能是一个简单的建议-是JS中缺少的

  $('.checkbox :name').change(function () {
    var $cs=$(this).closest('#checkbox').find(':name:checked'); // << see change here
    if ($cs.length > 3) {
        this.checked=false;
    }
  });
$('.checkbox:name')。更改(函数(){
var$cs=$(this).closest(“#复选框”).find(“:name:checked”);//3{
这个.checked=false;
}
});
如果不这样做,它将查找链上最近的复选框元素,而不是ID为“checkbox”的容器


让我知道这是否有帮助:)

如果剩余的未选中复选框超过一定数量的已选中复选框,则禁用它如何

大概是这样的:

$('#checkbox input:checkbox').change(function () {
  var $cs=$('#checkbox input:checkbox:checked');
  if ($cs.length > 3) {
    $('#checkbox input:checkbox:not(:checked)').attr("disabled", true);
  }
  else{
    $('#checkbox input:checkbox').attr("disabled", false);
  }
});

天哪,我复制粘贴了错误的代码。我编辑了这篇文章。我最初的代码实际上使用了无循环复选框。对不起,我搞错代码了。我把帖子编辑成我的代码。脚本标记中的标记就是一个例子。我尝试了几种不同的变体,但示例完全相同。我不知道如何将它连接到循环,因为我没有输入标记。(我在JS方面没有经验)@uno我更改了选择器,但我不能保证它会工作,我还没有测试。我仍然觉得这是个好主意。