在rails循环中限制collection_check_boxes选择

时间:2018-10-19 10:43:27

标签: javascript ruby-on-rails ruby

我想将复选标记限制为一定数量,以使人们不会滥用类别选择。

这是我遇到的几个例子中的尝试。循环不起作用。我使用常规的手动样式复选框系统对其进行了测试,并且可以正常工作。尚未找到使用循环的示例。

  <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>

我想将支票限制为5张。

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

2 个答案:

答案 0 :(得分:0)

可能很简单-是您的JS中缺少的#吗?

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

否则,它将查找链中最接近的复选框元素,而不是ID为“复选框”的容器。

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

答案 1 :(得分:0)

如果超过了一定数量的未选中复选框,如何禁用其余未选中的复选框?

类似这样的东西:

$('#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);
  }
});