Select2 «allowClear» не очищает поле выбора в определенной ситуации - PullRequest
0 голосов
/ 11 октября 2018

Это происходит, когда при изменении окна выбора окна изменяется DOM (некоторые элементы отображаются / скрываются в зависимости от значения поля выбора). Чтобы воспроизвести это, нажмите кнопку выбора «Очистить» в окне выборки.SelectBox не будет очищен.Некоторые опции выбора будут установлены в качестве значения.

$(document).ready(function(){
  $('#selectList').select2({
     width: '100%',
     allowClear: true,
     placeholder: 'select option',
     value: null
  }).on('select2:selecting', function (e) {
    console.log('selecting');
  }).on('select2:unselecting', function (e) {
    console.log('unselecting');
  }).on('select2:select', function (e) {
    console.log('select');
  }).on('select2:unselect', function (e) {
    console.log('unselect');
  }).on('change', function (e) {
    console.log('change');    
    if(!e.value){
      $('#some-data').hide();
    }
    else{
      $('#some-data').show();
    }
  })
});
.container{
  min-width:100%;
  min-height: 50px;
  background: #3C401D;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/css/select2.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/js/select2.js"></script>
<body>
  <div id="some-data" class='container'>
  </div>
  <select id="selectList" name="first">
    <option value="1" selected="selected">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
  </select>
</body>

Спасибо.

1 Ответ

0 голосов
/ 11 октября 2018

Решение, которое работает для меня:

  1. Предотвращение открытия при очистке выделения, как описано здесь github
  2. Открытие раскрывающегося списка с некоторым таймаутом.
...