Bootstrap Toggle Не работает на отключено-включено с ограниченными элементами - PullRequest
0 голосов
/ 29 ноября 2018

Я использую Bootstrap Toggle Library с Bootstrap4, но у меня возникают проблемы, когда я пытаюсь управлять тем, чтобы пользователь включал только «ограниченное» количество элементов.Вот мой HTML-код:

<div style="border:solid border-width: 1px;">
       <li class="ui-state-default">
           <input type="checkbox" name="checkImg" data-height="10" data-toggle="toggle" data-size="mini"data-onstyle="success" data-offstyle="danger">
                 Option 1
    </li> </div>

Все 11 элементов имеют одинаковый код, а мой Jquery:

$('input[name="checkImg"]').on('change', function (e) {
    if ($('input[name="checkImg"]:checked').length > 3 ) {
          console.log("In Condition");
          $(this).prop('checked', false);   
     }                        
   });

Вот фотография результата, когда я переключаю 4 элемента в 'ON ': enter image description here

Я вижу, что условие правильное, и обнаруживаю, когда 3 элемента находятся в положении «ON», но я не могу отключить оставшуюся часть «False» до тех пор, пока некоторые из «На «Элементы переключаются на« ВЫКЛ ».Кто-нибудь может помочь?

Кроме того, я использую отключенный из начальной загрузки, но не работал.

Спасибо за все.

Редактировать:

https://jsfiddle.net/5vr0c3w2/14/

1 Ответ

0 голосов
/ 29 ноября 2018

В вашем скрипте есть ошибка.попробуйте изменить это:

$('input[name=checkImg]')

на это

$('input[name="checkImg"]')

Я попытался исправить это, и сценарий, кажется, теперь работает.

РЕДАКТИРОВАТЬ: я вижу, проблема вс Bootstrap-toggle, который использует другой подход для проверки и снятия флажков.

Вместо того, чтобы просто снимать флажок, вы также должны изменить класс родительского div с «btn-success» на «btn-danger»выкл».Теперь этот фрагмент кода должен работать и для вас.

$('input[name="checkImg"]').on('change', function (e) {
    if ($('input[name="checkImg"]:checked').length > 3 ) {
        console.log("You can select no more than 3 options");
        $(this).prop('checked', false);
        $(this).parent().removeClass("btn-success");
        $(this).parent().addClass("btn-default off");
    }                        
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://gitcdn.github.io/bootstrap-toggle/2.2.2/js/bootstrap-toggle.min.js"></script>
<link href="https://gitcdn.github.io/bootstrap-toggle/2.2.2/css/bootstrap-toggle.min.css" rel="stylesheet"/>
<div class="container-fluid">
  <!-- Primera Fila -->
  <div class="col">
    <div class="card">
      <div class="card-header colorPlataforma">Imagenes Disponibles</div>
      <div class="card-body fuenteTabla">
        <div class="overflow">
          <ul class="justify-content-center col-12 connectedSortable" id="sortable1">
            <div style="border:solid border-width: 1px;">
              <li class="ui-state-default">
                <input type="checkbox" name="checkImg" data-height="10" data-toggle="toggle" data-size="mini"
                data-onstyle="success" data-offstyle="danger">
                Option 1
              </li>
            </div>
            <div style="border:solid border-width: 1px;">
              <li class="ui-state-default"> 
                <input type="checkbox" name="checkImg" data-height="10" data-toggle="toggle" data-size="mini"
                data-onstyle="success" data-offstyle="danger">
                Option 2
              </li>
            </div>
            <div style="border:solid border-width: 1px;">
              <li class="ui-state-default"> 
                <input type="checkbox" name="checkImg" data-height="10" data-toggle="toggle" data-size="mini"
                data-onstyle="success" data-offstyle="danger">
                Option 3 
              </li>
            </div>
            <div style="border:solid border-width: 1px;">
              <li class="ui-state-default"> 
                <input type="checkbox" name="checkImg" data-height="10" data-toggle="toggle" data-size="mini"
                data-onstyle="success" data-offstyle="danger">
                Option 4
              </li>
            </div>
          </ul>
        </div>
      </div>
    </div>
  </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...