Нажмите Optgroup и выберите / отмените выбор параметров для Bootstrap 4.0 - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь выбрать / отменить выбор групп выбора, чтобы выбрать все варианты в пределах. Я использую эту библиотеку 'https://github.com/snapappointments/bootstrap-select'.

Я попытался добавить код под этим: ' clickListener: function () {', который можно найти в файле bootstrap-select.js, но не получилось. Ниже то, что я пытался добавить. Для получения копии файла bootstrap-select.js, который я использовал, найдите ссылку в конце этого вопроса, поскольку весь файл не может быть загружен из-за ограничения переполнения стека 300 000 символов.

// I have tried adding code below under this: '<b>clickListener: function() {</b>' which can be found in the bootstrap-select.js file but failed:
this.$newElement.find('li').on('click', function(e) {
  e.preventDefault();
  console.log('Bootstrap-Select.js - line #1438');
  var base = $(this).closest(".bootstrap-select");
  var select = base.find("select");

  // check if this .dropdown-header is part of bootstrap-select AND multiple or not
  if (base.length && select.prop("multiple")) {

    var group = $(this).data("optgroup") - 1;
    var group2 = group + 1;
    var select = $(this).closest(".bootstrap-select").find("select");

    if ($(this).hasClass("dropdown-header")) {

      if (base.find("li[data-optgroup=" + group2 + "]:not(.selected)").length === 1)
        $(this).closest(".bootstrap-select").find("select > optgroup:eq(" + group + ") > option").prop("selected", false);
      else
        $(this).closest(".bootstrap-select").find("select > optgroup:eq(" + group + ") > option").prop("selected", true);

      select.selectpicker('render');
      //select.change();
    }
  }
});
<!DOCTYPE html>
<html>

<head>
  <title>Bootstrap-select Tests (Bootstrap 4)</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.9/css/bootstrap-select.css">
  <style>
    body {
      padding-top: 70px;
    }
  </style>
</head>

<body>
  <select class="selectpicker" multiple data-live-search="true">
    <optgroup label="Fruit">
      <option>Apple</option>
      <option>Orange</option>
    </optgroup>
    <optgroup label="Vegetable">
      <option>Corn</option>
      <option>Carrot</option>
    </optgroup>
  </select>
  <!-- To be continued -->
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.bundle.min.js"></script>
  <script src="../dist/js/bootstrap-select.js"></script>
</body>

</html>

Копия файла bootstrap-select.js находится здесь (поскольку размер файла превышает ограничение в 300000 символов в StackOverflow, следовательно, не может быть добавлен): https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.9/js/bootstrap-select.js

...