Ограничение выборки collection_check_boxes в цикле рельсов - PullRequest
0 голосов
/ 19 октября 2018

Я хочу ограничить выбор флажков определенным числом, чтобы люди не могли злоупотреблять выбором категорий.

Вот моя попытка из нескольких примеров, с которыми я столкнулся.Ни одна работа с петлей.Я проверил его с помощью обычной системы чекбоксов в ручном стиле, и она работает.Не найдено ни одного примера, где бы они использовали цикл.

  <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 голосов
/ 19 октября 2018

как насчет отключения остальных непроверенных флажков, если оно превышает определенное количество отмеченных?

примерно так:

$('#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);
  }
});
0 голосов
/ 19 октября 2018

Может быть простой - это недостающий # в вашем JS?

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

Без этого он будет искать ближайший элемент флажка вверх по цепочке, а не контейнер сИдентификатор 'checkbox'.

Дайте мне знать, если это поможет вообще:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...