Bootstrap Multi-Select - невозможно включить Select, когда все параметры сняты / не выбраны - PullRequest
0 голосов
/ 01 мая 2019

У меня есть два выбора, которые позволяют множественный выбор, используя плагин загрузки начальной загрузки и тип оплаты.То, что я хочу, это когда все опции в сервисах были отменены / не отмечены, тогда payment_type становится активным.Примечание: отключение в коде работает нормально, но включение поля - нет.Я что-то здесь не так делаю?

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

<select id="services" class="form-control" multiple="multiple" disabled>
       <option value="tire_rotation">Tire Rotation</option>
       <option value="oil_change">Oil Change</option>
       <option value="brake_check">Brake Check</option>
 </select>


 <select id="payment_type" class="form-control" multiple="multiple" disabled>
       <option value="cash">Cash</option>
       <option value="check">Check</option>
       <option value="credit_card">Credit Card</option>
       <option value="debit_card">Debit Card</option>
 </select>
$(document).ready(function() {
       $('#services').multiselect({
           buttonWidth: '375px',
           nonSelectedText: 'Select...',
           dropLeft: true,
           includeSelectAllOption: true,
           numberDisplayed: 1,
           onChange: function() {

               var servicesSelected = $("#services :selected").length;

               if ($(servicesSelected.length != 0)) {
                  $('#payment_type').multiselect('disable');
                  $('#payment_type').multiselect("deselectAll", false).multiselect("refresh");

               } 
               else {
                    $('#payment_type').multiselect('enable');
               }
           }
       });
   });

Ожидаемый результат: когда все службы имеютесли флажок не установлен, то выбор параметра payment_type станет активным.

1 Ответ

1 голос
/ 01 мая 2019

Это будет работать ...

 $(document).ready(function() {
  $('#services').multiselect({
    buttonWidth: '375px',
    nonSelectedText: 'Select...',
    dropLeft: true,
    includeSelectAllOption: true,
    numberDisplayed: 1,
    onSelectAll: function(checked) {
      enableDisablePaymentType(checked);
    },
    onChange: function() {
      var servicesSelected = $("#services :selected").length > 0 ? true : false;
      enableDisablePaymentType(servicesSelected);
    }
  });
});

function enableDisablePaymentType(servicesSelected) {
  if (servicesSelected) {
    $('#payment_type').multiselect('disable');
    $('#payment_type').multiselect("deselectAll", false).multiselect("refresh");
  } else {
    $('#payment_type').multiselect('enable');
  }
}
...